Convert wallet NavigationLinks

This commit is contained in:
Scott Penrose
2023-06-03 13:47:50 -04:00
committed by William Casarin
parent c50ccef56d
commit f361f55bd5
4 changed files with 22 additions and 7 deletions

View File

@@ -35,6 +35,8 @@ enum Route: Hashable {
case Login case Login
case CreateAccount case CreateAccount
case SaveKeys(account: CreateAccountModel) case SaveKeys(account: CreateAccountModel)
case Wallet(wallet: WalletModel)
case WalletScanner(result: Binding<WalletScanResult>)
@ViewBuilder @ViewBuilder
func view(navigationCordinator: NavigationCoordinator, damusState: DamusState) -> some View { func view(navigationCordinator: NavigationCoordinator, damusState: DamusState) -> some View {
@@ -98,6 +100,11 @@ enum Route: Hashable {
case .SaveKeys(let account): case .SaveKeys(let account):
SaveKeysView(account: account) SaveKeysView(account: account)
.environmentObject(navigationCordinator) .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 return true
case (.SaveKeys(let lhs_account), .SaveKeys(let rhs_account)): case (.SaveKeys(let lhs_account), .SaveKeys(let rhs_account)):
return lhs_account.pubkey == rhs_account.pubkey return lhs_account.pubkey == rhs_account.pubkey
case (.Wallet(_), .Wallet(_)):
return true
case (.WalletScanner(_), .WalletScanner(_)):
return true
default: default:
return false return false
} }
@@ -234,6 +245,10 @@ enum Route: Hashable {
case .SaveKeys(let account): case .SaveKeys(let account):
hasher.combine("saveKeys") hasher.combine("saveKeys")
hasher.combine(account.pubkey) hasher.combine(account.pubkey)
case .Wallet(_):
hasher.combine("wallet")
case .WalletScanner(_):
hasher.combine("walletScanner")
} }
} }
} }

View File

@@ -49,7 +49,7 @@ struct SideMenuView: View {
navLabel(title: NSLocalizedString("Profile", comment: "Sidebar menu label for Profile view."), img: "user") 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") navLabel(title: NSLocalizedString("Wallet", comment: "Sidebar menu label for Wallet view."), img: "wallet")
/* /*
HStack { HStack {

View File

@@ -9,6 +9,7 @@ import SwiftUI
struct ConnectWalletView: View { struct ConnectWalletView: View {
@Environment(\.openURL) private var openURL @Environment(\.openURL) private var openURL
@EnvironmentObject var navigationCoordinator: NavigationCoordinator
@ObservedObject var model: WalletModel @ObservedObject var model: WalletModel
@State var scanning: Bool = false @State var scanning: Bool = false
@@ -64,16 +65,12 @@ struct ConnectWalletView: View {
var ConnectWallet: some View { var ConnectWallet: some View {
VStack { VStack {
NavigationLink(destination: WalletScannerView(result: $wallet_scan_result), isActive: $scanning) {
EmptyView()
}
AlbyButton() { AlbyButton() {
openURL(URL(string:"https://nwc.getalby.com/apps/new?c=Damus")!) 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.")) { 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 { if let err = self.error {

View File

@@ -11,6 +11,7 @@ struct WalletView: View {
let damus_state: DamusState let damus_state: DamusState
@ObservedObject var model: WalletModel @ObservedObject var model: WalletModel
@ObservedObject var settings: UserSettingsStore @ObservedObject var settings: UserSettingsStore
@EnvironmentObject var navigationCoordinator: NavigationCoordinator
init(damus_state: DamusState, model: WalletModel? = nil) { init(damus_state: DamusState, model: WalletModel? = nil) {
self.damus_state = damus_state self.damus_state = damus_state
@@ -156,8 +157,10 @@ struct WalletView: View {
switch model.connect_state { switch model.connect_state {
case .new: case .new:
ConnectWalletView(model: model) ConnectWalletView(model: model)
.environmentObject(navigationCoordinator)
case .none: case .none:
ConnectWalletView(model: model) ConnectWalletView(model: model)
.environmentObject(navigationCoordinator)
case .existing(let nwc): case .existing(let nwc):
MainWalletView(nwc: nwc) MainWalletView(nwc: nwc)
.onAppear() { .onAppear() {