diff --git a/damus/Util/Router.swift b/damus/Util/Router.swift index c6067408..4303ff9b 100644 --- a/damus/Util/Router.swift +++ b/damus/Util/Router.swift @@ -35,6 +35,8 @@ enum Route: Hashable { case Login case CreateAccount case SaveKeys(account: CreateAccountModel) + case Wallet(wallet: WalletModel) + case WalletScanner(result: Binding) @ViewBuilder func view(navigationCordinator: NavigationCoordinator, damusState: DamusState) -> some View { @@ -98,6 +100,11 @@ enum Route: Hashable { case .SaveKeys(let account): SaveKeysView(account: account) .environmentObject(navigationCordinator) + case .Wallet(let walletModel): + WalletView(damus_state: damusState, model: walletModel) + .environmentObject(navigationCordinator) + case .WalletScanner(let walletScanResult): + WalletScannerView(result: walletScanResult) } } @@ -157,6 +164,10 @@ enum Route: Hashable { return true case (.SaveKeys(let lhs_account), .SaveKeys(let rhs_account)): return lhs_account.pubkey == rhs_account.pubkey + case (.Wallet(_), .Wallet(_)): + return true + case (.WalletScanner(_), .WalletScanner(_)): + return true default: return false } @@ -234,6 +245,10 @@ enum Route: Hashable { case .SaveKeys(let account): hasher.combine("saveKeys") hasher.combine(account.pubkey) + case .Wallet(_): + hasher.combine("wallet") + case .WalletScanner(_): + hasher.combine("walletScanner") } } } diff --git a/damus/Views/SideMenuView.swift b/damus/Views/SideMenuView.swift index 17486e14..1a8c8331 100644 --- a/damus/Views/SideMenuView.swift +++ b/damus/Views/SideMenuView.swift @@ -49,7 +49,7 @@ struct SideMenuView: View { navLabel(title: NSLocalizedString("Profile", comment: "Sidebar menu label for Profile view."), img: "user") } - NavigationLink(destination: WalletView(damus_state: damus_state, model: damus_state.wallet)) { + NavigationLink(value: Route.Wallet(wallet: damus_state.wallet)) { navLabel(title: NSLocalizedString("Wallet", comment: "Sidebar menu label for Wallet view."), img: "wallet") /* HStack { diff --git a/damus/Views/Wallet/ConnectWalletView.swift b/damus/Views/Wallet/ConnectWalletView.swift index a926935b..b91f08bb 100644 --- a/damus/Views/Wallet/ConnectWalletView.swift +++ b/damus/Views/Wallet/ConnectWalletView.swift @@ -9,6 +9,7 @@ import SwiftUI struct ConnectWalletView: View { @Environment(\.openURL) private var openURL + @EnvironmentObject var navigationCoordinator: NavigationCoordinator @ObservedObject var model: WalletModel @State var scanning: Bool = false @@ -63,17 +64,13 @@ struct ConnectWalletView: View { } var ConnectWallet: some View { - VStack { - NavigationLink(destination: WalletScannerView(result: $wallet_scan_result), isActive: $scanning) { - EmptyView() - } - + VStack { AlbyButton() { openURL(URL(string:"https://nwc.getalby.com/apps/new?c=Damus")!) } BigButton(NSLocalizedString("Attach Wallet", comment: "Text for button to attach Nostr Wallet Connect lightning wallet.")) { - scanning = true + navigationCoordinator.push(route: Route.WalletScanner(result: $wallet_scan_result)) } if let err = self.error { diff --git a/damus/Views/Wallet/WalletView.swift b/damus/Views/Wallet/WalletView.swift index 8208e2e5..f373d959 100644 --- a/damus/Views/Wallet/WalletView.swift +++ b/damus/Views/Wallet/WalletView.swift @@ -11,6 +11,7 @@ struct WalletView: View { let damus_state: DamusState @ObservedObject var model: WalletModel @ObservedObject var settings: UserSettingsStore + @EnvironmentObject var navigationCoordinator: NavigationCoordinator init(damus_state: DamusState, model: WalletModel? = nil) { self.damus_state = damus_state @@ -156,8 +157,10 @@ struct WalletView: View { switch model.connect_state { case .new: ConnectWalletView(model: model) + .environmentObject(navigationCoordinator) case .none: ConnectWalletView(model: model) + .environmentObject(navigationCoordinator) case .existing(let nwc): MainWalletView(nwc: nwc) .onAppear() {