diff --git a/damus/ContentView.swift b/damus/ContentView.swift index 90251585..a506f11c 100644 --- a/damus/ContentView.swift +++ b/damus/ContentView.swift @@ -142,7 +142,7 @@ struct ContentView: View { func contentTimelineView(filter: (@escaping (NostrEvent) -> Bool)) -> some View { ZStack { if let damus = self.damus_state { - TimelineView(events: home.events, loading: .constant(false), damus: damus, show_friend_icon: false, filter: filter) + TimelineView(events: home.events, loading: .constant(false), damus: damus, show_friend_icon: false, filter: filter) } } } diff --git a/damus/Views/SearchHomeView.swift b/damus/Views/SearchHomeView.swift index 222dd800..0c49b9c1 100644 --- a/damus/Views/SearchHomeView.swift +++ b/damus/Views/SearchHomeView.swift @@ -44,7 +44,7 @@ struct SearchHomeView: View { } var GlobalContent: some View { - return TimelineView( + return TimelineView( events: model.events, loading: $model.loading, damus: damus_state, diff --git a/damus/Views/SearchView.swift b/damus/Views/SearchView.swift index cedb492c..dd328372 100644 --- a/damus/Views/SearchView.swift +++ b/damus/Views/SearchView.swift @@ -13,7 +13,7 @@ struct SearchView: View { @Environment(\.dismiss) var dismiss var body: some View { - TimelineView(events: search.events, loading: $search.loading, damus: appstate, show_friend_icon: true, filter: { _ in true }) + TimelineView(events: search.events, loading: $search.loading, damus: appstate, show_friend_icon: true, filter: { _ in true }) .navigationBarTitle(describe_search(search.search)) .onReceive(handle_notify(.switched_timeline)) { obj in dismiss() diff --git a/damus/Views/TimelineView.swift b/damus/Views/TimelineView.swift index 326ae8bc..6935d655 100644 --- a/damus/Views/TimelineView.swift +++ b/damus/Views/TimelineView.swift @@ -7,14 +7,24 @@ import SwiftUI -struct TimelineView: View { +struct TimelineView: View { @ObservedObject var events: EventHolder @Binding var loading: Bool let damus: DamusState let show_friend_icon: Bool let filter: (NostrEvent) -> Bool - + let content: Content? + + init(events: EventHolder, loading: Binding, damus: DamusState, show_friend_icon: Bool, filter: @escaping (NostrEvent) -> Bool, content: (() -> Content)? = nil) { + self.events = events + self._loading = loading + self.damus = damus + self.show_friend_icon = show_friend_icon + self.filter = filter + self.content = content?() + } + var body: some View { MainContent } @@ -22,10 +32,14 @@ struct TimelineView: View { var MainContent: some View { ScrollViewReader { scroller in ScrollView { + if let content { + content + } + Color.white.opacity(0) .id("startblock") .frame(height: 1) - + InnerTimelineView(events: events, damus: damus, filter: loading ? { _ in true } : filter) .redacted(reason: loading ? .placeholder : []) .shimmer(loading) @@ -52,7 +66,7 @@ struct TimelineView: View { struct TimelineView_Previews: PreviewProvider { @StateObject static var events = test_event_holder static var previews: some View { - TimelineView(events: events, loading: .constant(true), damus: Constants.EXAMPLE_DEMOS, show_friend_icon: true, filter: { _ in true }) + TimelineView(events: events, loading: .constant(true), damus: Constants.EXAMPLE_DEMOS, show_friend_icon: true, filter: { _ in true }) } }