diff --git a/damus/Util/Router.swift b/damus/Util/Router.swift index 857e5787..a522507e 100644 --- a/damus/Util/Router.swift +++ b/damus/Util/Router.swift @@ -57,6 +57,7 @@ enum Route: Hashable { RelayDetailView(state: damusState, relay: relay, nip11: metadata) case .Following(let following): FollowingView(damus_state: damusState, following: following) + .environmentObject(navigationCordinator) case .MuteList(let users): MutelistView(damus_state: damusState, users: users) case .RelayConfig: @@ -88,8 +89,10 @@ enum Route: Hashable { ThreadView(state: damusState, thread: thread) case .Reposts(let reposts): RepostsView(damus_state: damusState, model: reposts) + .environmentObject(navigationCordinator) case .Reactions(let reactions): ReactionsView(damus_state: damusState, model: reactions) + .environmentObject(navigationCordinator) case .Zaps(let target): ZapsView(state: damusState, target: target) case .Search(let search): diff --git a/damus/Views/FollowingView.swift b/damus/Views/FollowingView.swift index 0060d429..af995597 100644 --- a/damus/Views/FollowingView.swift +++ b/damus/Views/FollowingView.swift @@ -10,12 +10,16 @@ import SwiftUI struct FollowUserView: View { let target: FollowTarget let damus_state: DamusState + @EnvironmentObject var navigationCoordinator: NavigationCoordinator static let markdown = Markdown() var body: some View { HStack { UserViewRow(damus_state: damus_state, pubkey: target.pubkey) + .onTapGesture { + navigationCoordinator.push(route: Route.ProfileByKey(pubkey: target.pubkey)) + } FollowButtonView(target: target, follows_you: false, follow_state: damus_state.contacts.follow_state(target.pubkey)) } @@ -46,12 +50,14 @@ struct FollowersView: View { let damus_state: DamusState @EnvironmentObject var followers: FollowersModel + @EnvironmentObject var navigationCoordinator: NavigationCoordinator var body: some View { ScrollView { LazyVStack(alignment: .leading) { ForEach(followers.contacts ?? [], id: \.self) { pk in FollowUserView(target: .pubkey(pk), damus_state: damus_state) + .environmentObject(navigationCoordinator) } } .padding(.horizontal) @@ -70,12 +76,15 @@ struct FollowingView: View { let damus_state: DamusState let following: FollowingModel + + @EnvironmentObject var navigationCoordinator: NavigationCoordinator var body: some View { ScrollView { LazyVStack(alignment: .leading) { ForEach(following.contacts.reversed(), id: \.self) { pk in FollowUserView(target: .pubkey(pk), damus_state: damus_state) + .environmentObject(navigationCoordinator) } } .padding() diff --git a/damus/Views/Reactions/ReactionView.swift b/damus/Views/Reactions/ReactionView.swift index 6b99fc79..1a7ca30e 100644 --- a/damus/Views/Reactions/ReactionView.swift +++ b/damus/Views/Reactions/ReactionView.swift @@ -10,6 +10,7 @@ import SwiftUI struct ReactionView: View { let damus_state: DamusState let reaction: NostrEvent + @EnvironmentObject var navigationCoordinator: NavigationCoordinator var content: String { return to_reaction_emoji(ev: reaction) ?? "" @@ -22,6 +23,7 @@ struct ReactionView: View { .frame(width: 50, height: 50) FollowUserView(target: .pubkey(reaction.pubkey), damus_state: damus_state) + .environmentObject(navigationCoordinator) } } } diff --git a/damus/Views/ReactionsView.swift b/damus/Views/ReactionsView.swift index 7d74e3ed..1ca21ddd 100644 --- a/damus/Views/ReactionsView.swift +++ b/damus/Views/ReactionsView.swift @@ -10,6 +10,7 @@ import SwiftUI struct ReactionsView: View { let damus_state: DamusState @StateObject var model: ReactionsModel + @EnvironmentObject var navigationCoordinator: NavigationCoordinator @Environment(\.dismiss) var dismiss @@ -18,6 +19,7 @@ struct ReactionsView: View { LazyVStack { ForEach(model.events, id: \.id) { ev in ReactionView(damus_state: damus_state, reaction: ev) + .environmentObject(navigationCoordinator) } } .padding() diff --git a/damus/Views/Reposts/RepostView.swift b/damus/Views/Reposts/RepostView.swift index f619f4fb..7a7e0054 100644 --- a/damus/Views/Reposts/RepostView.swift +++ b/damus/Views/Reposts/RepostView.swift @@ -10,9 +10,11 @@ import SwiftUI struct RepostView: View { let damus_state: DamusState let repost: NostrEvent + @EnvironmentObject var navigationCoordinator: NavigationCoordinator var body: some View { FollowUserView(target: .pubkey(repost.pubkey), damus_state: damus_state) + .environmentObject(navigationCoordinator) } } diff --git a/damus/Views/RepostsView.swift b/damus/Views/RepostsView.swift index a2bf1dc6..c059382f 100644 --- a/damus/Views/RepostsView.swift +++ b/damus/Views/RepostsView.swift @@ -10,12 +10,14 @@ import SwiftUI struct RepostsView: View { let damus_state: DamusState @StateObject var model: RepostsModel + @EnvironmentObject var navigationCoordinator: NavigationCoordinator var body: some View { ScrollView { LazyVStack { ForEach(model.events, id: \.id) { ev in RepostView(damus_state: damus_state, repost: ev) + .environmentObject(navigationCoordinator) } } .padding() diff --git a/damus/Views/Search/SearchingEventView.swift b/damus/Views/Search/SearchingEventView.swift index 6093f73d..044875fc 100644 --- a/damus/Views/Search/SearchingEventView.swift +++ b/damus/Views/Search/SearchingEventView.swift @@ -24,6 +24,7 @@ struct SearchingEventView: View { let state: DamusState let evid: String let search_type: SearchType + @EnvironmentObject var navigationCoordinator: NavigationCoordinator @State var search_state: SearchState = .searching @@ -107,6 +108,7 @@ struct SearchingEventView: View { case .found_profile(let pk): NavigationLink(value: Route.ProfileByKey(pubkey: pk)) { FollowUserView(target: .pubkey(pk), damus_state: state) + .environmentObject(navigationCoordinator) } .buttonStyle(PlainButtonStyle()) case .not_found: diff --git a/damus/Views/SearchHomeView.swift b/damus/Views/SearchHomeView.swift index 3e439ee4..5772bcdb 100644 --- a/damus/Views/SearchHomeView.swift +++ b/damus/Views/SearchHomeView.swift @@ -78,6 +78,7 @@ struct SearchHomeView: View { var SearchContent: some View { SearchResultsView(damus_state: damus_state, search: $search) + .environmentObject(navigationCoordinator) .refreshable { // Fetch new information by unsubscribing and resubscribing to the relay model.unsubscribe() diff --git a/damus/Views/SearchResultsView.swift b/damus/Views/SearchResultsView.swift index 545cbec2..5a74d801 100644 --- a/damus/Views/SearchResultsView.swift +++ b/damus/Views/SearchResultsView.swift @@ -37,9 +37,11 @@ enum Search: Identifiable { struct InnerSearchResults: View { let damus_state: DamusState let search: Search? + @EnvironmentObject var navigationCoordinator: NavigationCoordinator func ProfileSearchResult(pk: String) -> some View { FollowUserView(target: .pubkey(pk), damus_state: damus_state) + .environmentObject(navigationCoordinator) } func HashtagSearch(_ ht: String) -> some View { @@ -68,6 +70,7 @@ struct InnerSearchResults: View { case .nip05(let addr): SearchingEventView(state: damus_state, evid: addr, search_type: .nip05) + .environmentObject(navigationCoordinator) case .profile(let prof): let decoded = try? bech32_decode(prof) @@ -106,10 +109,12 @@ struct SearchResultsView: View { let damus_state: DamusState @Binding var search: String @State var result: Search? = nil + @EnvironmentObject var navigationCoordinator: NavigationCoordinator var body: some View { ScrollView { InnerSearchResults(damus_state: damus_state, search: result) + .environmentObject(navigationCoordinator) .padding() } .frame(maxHeight: .infinity)