LoadMoreButton.swift (1354B)
1 // 2 // LoadMoreButton.swift 3 // damus 4 // 5 // Created by William Casarin on 2023-02-20. 6 // 7 8 import SwiftUI 9 10 struct LoadMoreButton: View { 11 @ObservedObject var events: EventHolder 12 let scroller: ScrollViewProxy? 13 14 func click() { 15 events.flush() 16 guard let ev = events.events.first, let scroller else { 17 return 18 } 19 scroll_to_event(scroller: scroller, id: ev.id, delay: 0.1, animate: true) 20 } 21 22 var body: some View { 23 Group { 24 if events.queued > 0 { 25 Button(action: click) { 26 Text("Load \(events.queued) more", comment: "Button text for loading more events, where the variable is the number of events.") 27 } 28 .font(.system(size: 14, weight: .bold)) 29 .padding(10) 30 .frame(height: 30) 31 .foregroundColor(.white) 32 .background(LINEAR_GRADIENT) 33 .clipShape(Capsule()) 34 } else { 35 EmptyView() 36 } 37 } 38 } 39 } 40 41 struct LoadMoreButton_Previews: PreviewProvider { 42 @StateObject static var events: EventHolder = test_event_holder 43 44 static var previews: some View { 45 LoadMoreButton(events: events, scroller: nil) 46 } 47 } 48 49 50 let test_event_holder = EventHolder(events: [], incoming: [test_event])