diff --git a/damus/ContentView.swift b/damus/ContentView.swift index 3d0d43e5..619fc0c7 100644 --- a/damus/ContentView.swift +++ b/damus/ContentView.swift @@ -282,6 +282,7 @@ struct ContentView: View { .tabViewStyle(.page(indexDisplayMode: .never)) .overlay( SideMenuView(damus_state: damus, isSidebarVisible: $isSideBarOpened.animation()) + .environmentObject(navigationCoordinator) ) .navigationDestination(for: Route.self) { route in route.view(navigationCordinator: navigationCoordinator, damusState: damus_state!) diff --git a/damus/Util/Router.swift b/damus/Util/Router.swift index a522507e..647d01c6 100644 --- a/damus/Util/Router.swift +++ b/damus/Util/Router.swift @@ -38,6 +38,7 @@ enum Route: Hashable { case SaveKeys(account: CreateAccountModel) case Wallet(wallet: WalletModel) case WalletScanner(result: Binding) + case FollowersYouKnow(friendedFollowers: [String]) @ViewBuilder func view(navigationCordinator: NavigationCoordinator, damusState: DamusState) -> some View { @@ -115,6 +116,8 @@ enum Route: Hashable { .environmentObject(navigationCordinator) case .WalletScanner(let walletScanResult): WalletScannerView(result: walletScanResult) + case .FollowersYouKnow(let friendedFollowers): + FollowersYouKnowView(damus_state: damusState, friended_followers: friendedFollowers) } } @@ -180,6 +183,8 @@ enum Route: Hashable { return true case (.WalletScanner(_), .WalletScanner(_)): return true + case (.FollowersYouKnow(let lhs_friendedFollowers), .FollowersYouKnow(let rhs_friendedFollowers)): + return lhs_friendedFollowers == rhs_friendedFollowers default: return false } @@ -263,6 +268,9 @@ enum Route: Hashable { hasher.combine("wallet") case .WalletScanner(_): hasher.combine("walletScanner") + case .FollowersYouKnow(let friendedFollowers): + hasher.combine("followersYouKnow") + hasher.combine(friendedFollowers) } } } diff --git a/damus/Views/Profile/ProfileView.swift b/damus/Views/Profile/ProfileView.swift index 3c64221d..80305ea2 100644 --- a/damus/Views/Profile/ProfileView.swift +++ b/damus/Views/Profile/ProfileView.swift @@ -451,7 +451,7 @@ struct ProfileView: View { if !friended_followers.isEmpty { Spacer() - NavigationLink(destination: FollowersYouKnowView(damus_state: damus_state, friended_followers: friended_followers)) { + NavigationLink(value: Route.FollowersYouKnow(friendedFollowers: friended_followers)) { HStack { CondensedProfilePicturesView(state: damus_state, pubkeys: friended_followers, maxPictures: 3) Text(followedByString(friended_followers, profiles: damus_state.profiles)) @@ -521,6 +521,7 @@ struct ProfileView: View { } .fullScreenCover(isPresented: $show_qr_code) { QRCodeView(damus_state: damus_state, pubkey: profile.pubkey) + .environmentObject(navigationCoordinator) } if damus_state.is_privkey_user { diff --git a/damus/Views/QRCodeView.swift b/damus/Views/QRCodeView.swift index 86dd1669..90604873 100644 --- a/damus/Views/QRCodeView.swift +++ b/damus/Views/QRCodeView.swift @@ -45,12 +45,12 @@ struct QRCodeView: View { @State var pubkey: String @Environment(\.presentationMode) var presentationMode + @EnvironmentObject var navigationCoordinator: NavigationCoordinator @State private var selectedTab = 0 @State var scanResult: ProfileScanResult? = nil - - @State var showProfileView: Bool = false + @State var profile: Profile? = nil @State var error: String? = nil @@ -209,13 +209,6 @@ struct QRCodeView: View { Spacer() - if let scanResult { - let dst = ProfileView(damus_state: damus_state, pubkey: scanResult.pubkey) - NavigationLink(destination: dst, isActive: $showProfileView) { - EmptyView() - } - } - Spacer() Button(action: { @@ -271,9 +264,10 @@ struct QRCodeView: View { func show_profile_after_delay() { DispatchQueue.main.asyncAfter(deadline: .now() + animationDuration) { - showProfileView = true + if let scanResult { + navigationCoordinator.push(route: Route.ProfileByKey(pubkey: scanResult.pubkey)) + } } - } func cameraAnimate(completion: @escaping () -> Void) { diff --git a/damus/Views/Relays/RecommendedRelayView.swift b/damus/Views/Relays/RecommendedRelayView.swift index 47026170..92cf726e 100644 --- a/damus/Views/Relays/RecommendedRelayView.swift +++ b/damus/Views/Relays/RecommendedRelayView.swift @@ -42,9 +42,7 @@ struct RecommendedRelayView: View { Text(relay).layoutPriority(1) if let meta = damus.relay_metadata.lookup(relay_id: relay) { - NavigationLink ( destination: - RelayDetailView(state: damus, relay: relay, nip11: meta) - ){ + NavigationLink(value: Route.RelayDetail(relay: relay, metadata: meta)){ EmptyView() } .opacity(0.0) diff --git a/damus/Views/SideMenuView.swift b/damus/Views/SideMenuView.swift index 1a8c8331..6cd04b5c 100644 --- a/damus/Views/SideMenuView.swift +++ b/damus/Views/SideMenuView.swift @@ -15,6 +15,7 @@ struct SideMenuView: View { @State private var showQRCode = false @Environment(\.colorScheme) var colorScheme + @EnvironmentObject var navigationCoordinator: NavigationCoordinator var sideBarWidth = min(UIScreen.main.bounds.size.width * 0.65, 400.0) let verticalSpacing: CGFloat = 20 @@ -161,6 +162,7 @@ struct SideMenuView: View { .dynamicTypeSize(.xSmall) }).fullScreenCover(isPresented: $showQRCode) { QRCodeView(damus_state: damus_state, pubkey: damus_state.pubkey) + .environmentObject(navigationCoordinator) } } .padding(.top, verticalSpacing)