From eee86f06b29c037829e34375e788645f66469900 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 13 Oct 2024 08:14:26 -0500 Subject: [PATCH 1/8] works --- .../Resources/Localizable.xcstrings | 1 - .../Service/BDK Service/BDKService.swift | 82 +++++++-- .../Activity/TransactionListViewModel.swift | 5 + .../View Model/OnboardingViewModel.swift | 171 +++++++++++++++--- .../Settings/SettingsViewModel.swift | 71 +++++--- .../View/Activity/TransactionListView.swift | 4 +- .../View/OnboardingView.swift | 14 +- 7 files changed, 270 insertions(+), 78 deletions(-) diff --git a/BDKSwiftExampleWallet/Resources/Localizable.xcstrings b/BDKSwiftExampleWallet/Resources/Localizable.xcstrings index 3c50e8c8..5678d1a6 100644 --- a/BDKSwiftExampleWallet/Resources/Localizable.xcstrings +++ b/BDKSwiftExampleWallet/Resources/Localizable.xcstrings @@ -674,7 +674,6 @@ } }, "Testnet" : { - "extractionState" : "stale", "localizations" : { "fr" : { "stringUnit" : { diff --git a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift index 1304131f..a927d21f 100644 --- a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift +++ b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift @@ -13,23 +13,51 @@ private class BDKService { private var balance: Balance? private var connection: Connection? - private let esploraClient: EsploraClient + private var esploraClient: EsploraClient private let keyClient: KeyClient private var needsFullScan: Bool = false - var network: Network + private(set) var network: Network + private(set) var esploraURL: String private var wallet: Wallet? - init( - keyClient: KeyClient = .live - ) { - let storedNetworkString = try! keyClient.getNetwork() ?? Network.signet.description - let storedEsploraURL = - try! keyClient.getEsploraURL() - ?? Constants.Config.EsploraServerURLNetwork.Signet.mutiny - - self.network = Network(stringValue: storedNetworkString) ?? .signet + init(keyClient: KeyClient = .live) { self.keyClient = keyClient - self.esploraClient = EsploraClient(url: storedEsploraURL) + + let storedNetworkString = try? keyClient.getNetwork() ?? Network.signet.description + self.network = Network(stringValue: storedNetworkString ?? "") ?? .signet + + self.esploraURL = + try! keyClient.getEsploraURL() ?? Constants.Config.EsploraServerURLNetwork.Signet.mutiny + self.esploraClient = EsploraClient(url: self.esploraURL) + + print("BDKService initialized - Network: \(self.network), Esplora URL: \(self.esploraURL)") + } + + func updateNetwork(_ newNetwork: Network) { + if newNetwork != self.network { + print("Updating network from \(self.network) to \(newNetwork)") + self.network = newNetwork + try? keyClient.saveNetwork(newNetwork.description) + updateEsploraClient() + } else { + print("Network update skipped: already set to \(newNetwork)") + } + } + + func updateEsploraURL(_ newURL: String) { + if newURL != self.esploraURL { + print("Updating Esplora URL from \(self.esploraURL) to \(newURL)") + self.esploraURL = newURL + try? keyClient.saveEsploraURL(newURL) + updateEsploraClient() + } else { + print("Esplora URL update skipped: already set to \(newURL)") + } + } + + private func updateEsploraClient() { + print("Updating Esplora client with URL: \(self.esploraURL)") + self.esploraClient = EsploraClient(url: self.esploraURL) } func getAddress() throws -> String { @@ -311,6 +339,10 @@ struct BDKClient { let getBackupInfo: () throws -> BackupInfo let needsFullScan: () -> Bool let setNeedsFullScan: (Bool) -> Void + let getNetwork: () -> Network + let getEsploraURL: () -> String + let updateNetwork: (Network) -> Void + let updateEsploraURL: (String) -> Void } extension BDKClient { @@ -345,7 +377,25 @@ extension BDKClient { }, getBackupInfo: { try BDKService.shared.getBackupInfo() }, needsFullScan: { BDKService.shared.needsFullScanOfWallet() }, - setNeedsFullScan: { value in BDKService.shared.setNeedsFullScan(value) } + setNeedsFullScan: { value in BDKService.shared.setNeedsFullScan(value) }, + getNetwork: { + let network = BDKService.shared.network + print("BDKClient: Getting network - \(network)") + return network + }, + getEsploraURL: { + let url = BDKService.shared.esploraURL + print("BDKClient: Getting Esplora URL - \(url)") + return url + }, + updateNetwork: { newNetwork in + print("BDKClient: Updating network to \(newNetwork)") + BDKService.shared.updateNetwork(newNetwork) + }, + updateEsploraURL: { newURL in + print("BDKClient: Updating Esplora URL to \(newURL)") + BDKService.shared.updateEsploraURL(newURL) + } ) } @@ -395,7 +445,11 @@ extension BDKClient { ) }, needsFullScan: { true }, - setNeedsFullScan: { _ in } + setNeedsFullScan: { _ in }, + getNetwork: { .signet }, + getEsploraURL: { "https://blockstream.info/api" }, + updateNetwork: { _ in }, + updateEsploraURL: { _ in } ) } #endif diff --git a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift index 5a0c13e0..3c33296b 100644 --- a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift @@ -43,4 +43,9 @@ class TransactionListViewModel { return savedEsploraURL } + func getNetwork() -> String? { + let savedNetwork = try? keyClient.getNetwork() + return savedNetwork + } + } diff --git a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift index 51d68175..7f698d74 100644 --- a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift @@ -20,29 +20,43 @@ class OnboardingViewModel: ObservableObject { @Published var createWithPersistError: CreateWithPersistError? @Published var networkColor = Color.gray @Published var onboardingViewError: AppError? + // @Published var selectedNetwork: Network = .signet { + // didSet { + // do { + // let networkString = selectedNetwork.description + // try keyClient.saveNetwork(networkString) + // selectedURL = availableURLs.first ?? "" + // try keyClient.saveEsploraURL(selectedURL) + // } catch { + // DispatchQueue.main.async { + // self.onboardingViewError = .generic(message: error.localizedDescription) + // } + // } + // } + // } + // @Published var selectedURL: String = "" { + // didSet { + // do { + // try keyClient.saveEsploraURL(selectedURL) + // } catch { + // DispatchQueue.main.async { + // self.onboardingViewError = .generic(message: error.localizedDescription) + // } + // } + // } + // } @Published var selectedNetwork: Network = .signet { didSet { - do { - let networkString = selectedNetwork.description - try keyClient.saveNetwork(networkString) - selectedURL = availableURLs.first ?? "" - try keyClient.saveEsploraURL(selectedURL) - } catch { - DispatchQueue.main.async { - self.onboardingViewError = .generic(message: error.localizedDescription) - } - } + print("OnboardingViewModel: Network changed from \(oldValue) to \(selectedNetwork)") + bdkClient.updateNetwork(selectedNetwork) + selectedURL = availableURLs.first ?? "" + bdkClient.updateEsploraURL(selectedURL) } } @Published var selectedURL: String = "" { didSet { - do { - try keyClient.saveEsploraURL(selectedURL) - } catch { - DispatchQueue.main.async { - self.onboardingViewError = .generic(message: error.localizedDescription) - } - } + print("OnboardingViewModel: Esplora URL changed from \(oldValue) to \(selectedURL)") + bdkClient.updateEsploraURL(selectedURL) } } @Published var words: String = "" { @@ -63,6 +77,18 @@ class OnboardingViewModel: ObservableObject { return Constants.Config.EsploraServerURLNetwork.Signet.allValues } } + private func availableURLs(for network: Network) -> [String] { + switch network { + case .signet: + return Constants.Config.EsploraServerURLNetwork.Signet.allValues + case .testnet: + return Constants.Config.EsploraServerURLNetwork.Testnet.allValues + case .bitcoin: + return Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues + case .regtest: + return Constants.Config.EsploraServerURLNetwork.Regtest.allValues + } + } var buttonColor: Color { switch selectedNetwork { case .bitcoin: @@ -76,27 +102,112 @@ class OnboardingViewModel: ObservableObject { } } + // init( + // bdkClient: BDKClient = .live, + // keyClient: KeyClient = .live + // ) { + // self.bdkClient = bdkClient + // self.keyClient = keyClient + // print("OnboardingViewModel: Initializing") + // + // let currentNetwork = bdkClient.getNetwork() + // let currentURL = bdkClient.getEsploraURL() + // + // // Set network + // if let storedNetwork = try? keyClient.getNetwork().flatMap({ Network(stringValue: $0) }) { + // self.selectedNetwork = storedNetwork + // if storedNetwork != currentNetwork { + // print("OnboardingViewModel: Network changed from \(currentNetwork) to \(storedNetwork)") + // bdkClient.updateNetwork(storedNetwork) + // } else { + // print("OnboardingViewModel: Network unchanged: \(currentNetwork)") + // } + // } else { + // self.selectedNetwork = currentNetwork + // print("OnboardingViewModel: Using current network: \(currentNetwork)") + // } + // + // // Set Esplora URL + // if let storedURL = try? keyClient.getEsploraURL(), isValidURL(storedURL, for: self.selectedNetwork) { + // self.selectedURL = storedURL + // } else if isValidURL(currentURL, for: self.selectedNetwork) { + // self.selectedURL = currentURL + // } else { + // self.selectedURL = availableURLs(for: self.selectedNetwork).first ?? "" + // } + // + // if self.selectedURL != currentURL { + // print("OnboardingViewModel: Esplora URL changed from \(currentURL) to \(self.selectedURL)") + // bdkClient.updateEsploraURL(self.selectedURL) + // } else { + // print("OnboardingViewModel: Esplora URL unchanged: \(self.selectedURL)") + // } + // + // print("OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)") + // } + init( bdkClient: BDKClient = .live, keyClient: KeyClient = .live ) { self.bdkClient = bdkClient self.keyClient = keyClient - do { - if let networkString = try keyClient.getNetwork() { - self.selectedNetwork = Network(stringValue: networkString) ?? .signet - } else { - self.selectedNetwork = .signet - } - if let esploraURL = try keyClient.getEsploraURL() { - self.selectedURL = esploraURL + print("OnboardingViewModel: Initializing") + + let currentNetwork = bdkClient.getNetwork() + let currentURL = bdkClient.getEsploraURL() + + // Set network + if let storedNetwork = try? keyClient.getNetwork().flatMap({ Network(stringValue: $0) }) { + self.selectedNetwork = storedNetwork + if storedNetwork != currentNetwork { + print( + "OnboardingViewModel: Network changed from \(currentNetwork) to \(storedNetwork)" + ) + bdkClient.updateNetwork(storedNetwork) } else { - self.selectedURL = availableURLs.first ?? "" - } - } catch { - DispatchQueue.main.async { - self.onboardingViewError = .generic(message: error.localizedDescription) + print("OnboardingViewModel: Network unchanged: \(currentNetwork)") } + } else { + self.selectedNetwork = currentNetwork + print("OnboardingViewModel: Using current network: \(currentNetwork)") + } + + // Set Esplora URL + if let storedURL = try? keyClient.getEsploraURL(), + isValidURL(storedURL, for: self.selectedNetwork) + { + self.selectedURL = storedURL + } else if isValidURL(currentURL, for: self.selectedNetwork) { + self.selectedURL = currentURL + } else { + self.selectedURL = availableURLs(for: self.selectedNetwork).first ?? "" + } + + if self.selectedURL != currentURL { + print( + "OnboardingViewModel: Esplora URL changed from \(currentURL) to \(self.selectedURL)" + ) + bdkClient.updateEsploraURL(self.selectedURL) + } else { + print("OnboardingViewModel: Esplora URL unchanged: \(self.selectedURL)") + } + + print( + "OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)" + ) + } + + private func isValidURL(_ url: String, for network: Network) -> Bool { + switch network { + case .signet: + return Constants.Config.EsploraServerURLNetwork.Signet.allValues.contains(url) + case .testnet: + return Constants.Config.EsploraServerURLNetwork.Testnet.allValues.contains(url) + case .bitcoin: + return Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.contains(url) + case .regtest: + return Constants.Config.EsploraServerURLNetwork.Regtest.allValues.contains(url) } } diff --git a/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift b/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift index 9cc78d7d..7b4f4638 100644 --- a/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift @@ -22,24 +22,29 @@ class SettingsViewModel: ObservableObject { @Published var walletSyncState: WalletSyncState = .notStarted init( - bdkClient: BDKClient = .live, - keyClient: KeyClient = .live - ) { - self.bdkClient = bdkClient - self.keyClient = keyClient - } + bdkClient: BDKClient = .live, + keyClient: KeyClient = .live + ) { + self.bdkClient = bdkClient + self.keyClient = keyClient + print("SettingsViewModel: Initializing") + self.network = bdkClient.getNetwork().description + self.esploraURL = bdkClient.getEsploraURL() + print( + "SettingsViewModel: Initialized with network \(self.network ?? "nil") and URL \(self.esploraURL ?? "nil")" + ) + } func delete() { + print("SettingsViewModel: Deleting wallet") do { try bdkClient.deleteWallet() - DispatchQueue.main.async { - self.isOnboarding = true - } + isOnboarding = true + print("SettingsViewModel: Wallet deleted successfully") } catch { - DispatchQueue.main.async { - self.settingsError = .generic(message: error.localizedDescription) - self.showingSettingsViewErrorAlert = true - } + print("SettingsViewModel: Error deleting wallet - \(error.localizedDescription)") + self.settingsError = .generic(message: error.localizedDescription) + self.showingSettingsViewErrorAlert = true } } @@ -81,26 +86,36 @@ class SettingsViewModel: ObservableObject { } func getNetwork() { - do { - self.network = try keyClient.getNetwork() - } catch { - DispatchQueue.main.async { - self.settingsError = .generic(message: error.localizedDescription) - self.showingSettingsViewErrorAlert = true - } - } + self.network = bdkClient.getNetwork().description + print("SettingsViewModel: Retrieved network - \(self.network ?? "nil")") } func getEsploraUrl() { - do { - self.esploraURL = try keyClient.getEsploraURL() - } catch { - DispatchQueue.main.async { - self.settingsError = .generic(message: error.localizedDescription) - } - } + self.esploraURL = bdkClient.getEsploraURL() + print("SettingsViewModel: Retrieved Esplora URL - \(self.esploraURL ?? "nil")") } + // func getNetwork() { + // do { + // self.network = try keyClient.getNetwork() + // } catch { + // DispatchQueue.main.async { + // self.settingsError = .generic(message: error.localizedDescription) + // self.showingSettingsViewErrorAlert = true + // } + // } + // } + // + // func getEsploraUrl() { + // do { + // self.esploraURL = try keyClient.getEsploraURL() + // } catch { + // DispatchQueue.main.async { + // self.settingsError = .generic(message: error.localizedDescription) + // } + // } + // } + private func updateProgressFullScan(inspected: UInt64) { DispatchQueue.main.async { self.inspectedScripts = inspected diff --git a/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift b/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift index 098d4183..3315fedd 100644 --- a/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift +++ b/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift @@ -38,7 +38,9 @@ struct TransactionListView: View { let mutinyFaucetURL = URL(string: "https://faucet.mutinynet.com") let signetFaucetURL = URL(string: "https://signetfaucet.com") - if let mutinyFaucetURL, let signetFaucetURL { + if let mutinyFaucetURL, let signetFaucetURL, + viewModel.getNetwork() != Network.testnet.description + { Button { UIApplication.shared.open( diff --git a/BDKSwiftExampleWallet/View/OnboardingView.swift b/BDKSwiftExampleWallet/View/OnboardingView.swift index 8b1e3e97..09965740 100644 --- a/BDKSwiftExampleWallet/View/OnboardingView.swift +++ b/BDKSwiftExampleWallet/View/OnboardingView.swift @@ -77,10 +77,16 @@ struct OnboardingView: View { } .padding() - Text("Signet") - .foregroundStyle(.primary) - .fontWeight(.light) - .accessibilityLabel("Select Bitcoin Network") + Picker( + "Network", + selection: $viewModel.selectedNetwork + ) { + Text("Signet").tag(Network.signet) + Text("Testnet").tag(Network.testnet) + } + .pickerStyle(.automatic) + .tint(.primary) + .accessibilityLabel("Select Bitcoin Network") Picker( "Esplora Server", From 2568fa20c30884ec6044b3d75c9f638977255b80 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 13 Oct 2024 08:35:21 -0500 Subject: [PATCH 2/8] still works removing keyclient from anywhere except bdkservice --- .../Activity/TransactionDetailViewModel.swift | 43 +++--- .../Activity/TransactionListViewModel.swift | 9 +- .../View Model/OnboardingViewModel.swift | 142 ++++++++++-------- .../Settings/SettingsViewModel.swift | 23 ++- .../View/Activity/TransactionDetailView.swift | 5 +- .../View/Activity/TransactionListView.swift | 8 +- .../View/Settings/SettingsView.swift | 7 +- 7 files changed, 128 insertions(+), 109 deletions(-) diff --git a/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift b/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift index f3cbca2e..4ecd6f19 100644 --- a/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift @@ -13,7 +13,6 @@ import Observation @Observable class TransactionDetailViewModel { let bdkClient: BDKClient - let keyClient: KeyClient var calculateFee: String? var calculateFeeError: CalculateFeeError? @@ -24,11 +23,9 @@ class TransactionDetailViewModel { var transactionDetailsError: AppError? init( - bdkClient: BDKClient = .live, - keyClient: KeyClient = .live + bdkClient: BDKClient = .live ) { self.bdkClient = bdkClient - self.keyClient = keyClient } func getCalulateFee(tx: BitcoinDevKit.Transaction) { @@ -44,28 +41,28 @@ class TransactionDetailViewModel { } func getEsploraUrl() { - do { - let savedEsploraURL = try keyClient.getEsploraURL() - if network == "Signet" { - self.esploraURL = "https://mempool.space/signet" - } else { - self.esploraURL = savedEsploraURL - } - } catch let error as EsploraError { - DispatchQueue.main.async { - self.esploraError = error - } - } catch {} + // do { + let savedEsploraURL = bdkClient.getEsploraURL() //try keyClient.getEsploraURL() + if network == "Signet" { + self.esploraURL = "https://mempool.space/signet" + } else { + self.esploraURL = savedEsploraURL + } + // } catch let error as EsploraError { + // DispatchQueue.main.async { + // self.esploraError = error + // } + // } catch {} } func getNetwork() { - do { - self.network = try keyClient.getNetwork() - } catch { - DispatchQueue.main.async { - self.transactionDetailsError = .generic(message: error.localizedDescription) - } - } + // do { + self.network = bdkClient.getNetwork().description //try keyClient.getNetwork() + // } catch { + // DispatchQueue.main.async { + // self.transactionDetailsError = .generic(message: error.localizedDescription) + // } + // } } func getSentAndReceived(tx: BitcoinDevKit.Transaction) -> SentAndReceivedValues? { diff --git a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift index 3c33296b..9179e193 100644 --- a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift @@ -12,17 +12,14 @@ import Foundation @Observable class TransactionListViewModel { let bdkClient: BDKClient - let keyClient: KeyClient var showingWalletTransactionsViewErrorAlert = false var walletTransactionsViewError: AppError? init( - bdkClient: BDKClient = .live, - keyClient: KeyClient = .live + bdkClient: BDKClient = .live ) { self.bdkClient = bdkClient - self.keyClient = keyClient } func getSentAndReceived(tx: BitcoinDevKit.Transaction) -> SentAndReceivedValues? { @@ -39,12 +36,12 @@ class TransactionListViewModel { } func getEsploraURL() -> String? { - let savedEsploraURL = try? keyClient.getEsploraURL() + let savedEsploraURL = bdkClient.getEsploraURL() //try? keyClient.getEsploraURL() return savedEsploraURL } func getNetwork() -> String? { - let savedNetwork = try? keyClient.getNetwork() + let savedNetwork = bdkClient.getNetwork().description //try? keyClient.getNetwork() return savedNetwork } diff --git a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift index 7f698d74..b44a0140 100644 --- a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift @@ -14,7 +14,6 @@ import SwiftUI // Feature or Bug? class OnboardingViewModel: ObservableObject { let bdkClient: BDKClient - let keyClient: KeyClient @AppStorage("isOnboarding") var isOnboarding: Bool? @Published var createWithPersistError: CreateWithPersistError? @@ -77,18 +76,18 @@ class OnboardingViewModel: ObservableObject { return Constants.Config.EsploraServerURLNetwork.Signet.allValues } } - private func availableURLs(for network: Network) -> [String] { - switch network { - case .signet: - return Constants.Config.EsploraServerURLNetwork.Signet.allValues - case .testnet: - return Constants.Config.EsploraServerURLNetwork.Testnet.allValues - case .bitcoin: - return Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues - case .regtest: - return Constants.Config.EsploraServerURLNetwork.Regtest.allValues - } - } + // private func availableURLs(for network: Network) -> [String] { + // switch network { + // case .signet: + // return Constants.Config.EsploraServerURLNetwork.Signet.allValues + // case .testnet: + // return Constants.Config.EsploraServerURLNetwork.Testnet.allValues + // case .bitcoin: + // return Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues + // case .regtest: + // return Constants.Config.EsploraServerURLNetwork.Regtest.allValues + // } + // } var buttonColor: Color { switch selectedNetwork { case .bitcoin: @@ -146,70 +145,87 @@ class OnboardingViewModel: ObservableObject { // print("OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)") // } + // init( + // bdkClient: BDKClient = .live, + // keyClient: KeyClient = .live + // ) { + // self.bdkClient = bdkClient + // self.keyClient = keyClient + // print("OnboardingViewModel: Initializing") + // + // let currentNetwork = bdkClient.getNetwork() + // let currentURL = bdkClient.getEsploraURL() + // + // // Set network + // if let storedNetwork = try? keyClient.getNetwork().flatMap({ Network(stringValue: $0) }) { + // self.selectedNetwork = storedNetwork + // if storedNetwork != currentNetwork { + // print( + // "OnboardingViewModel: Network changed from \(currentNetwork) to \(storedNetwork)" + // ) + // bdkClient.updateNetwork(storedNetwork) + // } else { + // print("OnboardingViewModel: Network unchanged: \(currentNetwork)") + // } + // } else { + // self.selectedNetwork = currentNetwork + // print("OnboardingViewModel: Using current network: \(currentNetwork)") + // } + // + // // Set Esplora URL + // if let storedURL = try? keyClient.getEsploraURL(), + // isValidURL(storedURL, for: self.selectedNetwork) + // { + // self.selectedURL = storedURL + // } else if isValidURL(currentURL, for: self.selectedNetwork) { + // self.selectedURL = currentURL + // } else { + // self.selectedURL = availableURLs(for: self.selectedNetwork).first ?? "" + // } + // + // if self.selectedURL != currentURL { + // print( + // "OnboardingViewModel: Esplora URL changed from \(currentURL) to \(self.selectedURL)" + // ) + // bdkClient.updateEsploraURL(self.selectedURL) + // } else { + // print("OnboardingViewModel: Esplora URL unchanged: \(self.selectedURL)") + // } + // + // print( + // "OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)" + // ) + // } + init( - bdkClient: BDKClient = .live, - keyClient: KeyClient = .live + bdkClient: BDKClient = .live ) { self.bdkClient = bdkClient - self.keyClient = keyClient print("OnboardingViewModel: Initializing") let currentNetwork = bdkClient.getNetwork() let currentURL = bdkClient.getEsploraURL() - // Set network - if let storedNetwork = try? keyClient.getNetwork().flatMap({ Network(stringValue: $0) }) { - self.selectedNetwork = storedNetwork - if storedNetwork != currentNetwork { - print( - "OnboardingViewModel: Network changed from \(currentNetwork) to \(storedNetwork)" - ) - bdkClient.updateNetwork(storedNetwork) - } else { - print("OnboardingViewModel: Network unchanged: \(currentNetwork)") - } - } else { - self.selectedNetwork = currentNetwork - print("OnboardingViewModel: Using current network: \(currentNetwork)") - } - - // Set Esplora URL - if let storedURL = try? keyClient.getEsploraURL(), - isValidURL(storedURL, for: self.selectedNetwork) - { - self.selectedURL = storedURL - } else if isValidURL(currentURL, for: self.selectedNetwork) { - self.selectedURL = currentURL - } else { - self.selectedURL = availableURLs(for: self.selectedNetwork).first ?? "" - } - - if self.selectedURL != currentURL { - print( - "OnboardingViewModel: Esplora URL changed from \(currentURL) to \(self.selectedURL)" - ) - bdkClient.updateEsploraURL(self.selectedURL) - } else { - print("OnboardingViewModel: Esplora URL unchanged: \(self.selectedURL)") - } + self.selectedNetwork = currentNetwork + self.selectedURL = currentURL print( "OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)" ) } - private func isValidURL(_ url: String, for network: Network) -> Bool { - switch network { - case .signet: - return Constants.Config.EsploraServerURLNetwork.Signet.allValues.contains(url) - case .testnet: - return Constants.Config.EsploraServerURLNetwork.Testnet.allValues.contains(url) - case .bitcoin: - return Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.contains(url) - case .regtest: - return Constants.Config.EsploraServerURLNetwork.Regtest.allValues.contains(url) - } - } + // private func isValidURL(_ url: String, for network: Network) -> Bool { + // switch network { + // case .signet: + // return Constants.Config.EsploraServerURLNetwork.Signet.allValues.contains(url) + // case .testnet: + // return Constants.Config.EsploraServerURLNetwork.Testnet.allValues.contains(url) + // case .bitcoin: + // return Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.contains(url) + // case .regtest: + // return Constants.Config.EsploraServerURLNetwork.Regtest.allValues.contains(url) + // } + // } func createWallet() { do { diff --git a/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift b/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift index 7b4f4638..f97324a2 100644 --- a/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift @@ -11,7 +11,6 @@ import SwiftUI class SettingsViewModel: ObservableObject { let bdkClient: BDKClient - let keyClient: KeyClient @AppStorage("isOnboarding") var isOnboarding: Bool = true @Published var esploraURL: String? @@ -22,18 +21,16 @@ class SettingsViewModel: ObservableObject { @Published var walletSyncState: WalletSyncState = .notStarted init( - bdkClient: BDKClient = .live, - keyClient: KeyClient = .live - ) { - self.bdkClient = bdkClient - self.keyClient = keyClient - print("SettingsViewModel: Initializing") - self.network = bdkClient.getNetwork().description - self.esploraURL = bdkClient.getEsploraURL() - print( - "SettingsViewModel: Initialized with network \(self.network ?? "nil") and URL \(self.esploraURL ?? "nil")" - ) - } + bdkClient: BDKClient = .live + ) { + self.bdkClient = bdkClient + print("SettingsViewModel: Initializing") + self.network = bdkClient.getNetwork().description + self.esploraURL = bdkClient.getEsploraURL() + print( + "SettingsViewModel: Initialized with network \(self.network ?? "nil") and URL \(self.esploraURL ?? "nil")" + ) + } func delete() { print("SettingsViewModel: Deleting wallet") diff --git a/BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift b/BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift index bf43c117..11333c49 100644 --- a/BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift +++ b/BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift @@ -172,7 +172,10 @@ struct TransactionDetailView: View { #if DEBUG #Preview { TransactionDetailView( - viewModel: .init(bdkClient: .mock, keyClient: .mock), + viewModel: .init( + bdkClient: .mock //, + // keyClient: .mock + ), amount: UInt64(1_000_000), canonicalTx: .mock ) diff --git a/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift b/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift index 3315fedd..5c18d5ff 100644 --- a/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift +++ b/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift @@ -38,7 +38,8 @@ struct TransactionListView: View { let mutinyFaucetURL = URL(string: "https://faucet.mutinynet.com") let signetFaucetURL = URL(string: "https://signetfaucet.com") - if let mutinyFaucetURL, let signetFaucetURL, + if let mutinyFaucetURL, + let signetFaucetURL, viewModel.getNetwork() != Network.testnet.description { @@ -77,7 +78,10 @@ struct TransactionListView: View { NavigationLink( destination: TransactionDetailView( - viewModel: .init(bdkClient: .live, keyClient: .live), + viewModel: .init( + bdkClient: .live //, + // keyClient: .live + ), amount: sentAndReceivedValues.sent.toSat() == 0 ? sentAndReceivedValues.received.toSat() : sentAndReceivedValues.sent.toSat() diff --git a/BDKSwiftExampleWallet/View/Settings/SettingsView.swift b/BDKSwiftExampleWallet/View/Settings/SettingsView.swift index 38644295..33935c8b 100644 --- a/BDKSwiftExampleWallet/View/Settings/SettingsView.swift +++ b/BDKSwiftExampleWallet/View/Settings/SettingsView.swift @@ -144,6 +144,11 @@ struct SettingsView: View { #if DEBUG #Preview { - SettingsView(viewModel: .init(bdkClient: .mock, keyClient: .mock)) + SettingsView( + viewModel: .init( + bdkClient: .mock //, + // keyClient: .mock + ) + ) } #endif From 776e2c6ca610060f1fb261e09c22200ec0fbc90c Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 13 Oct 2024 08:53:07 -0500 Subject: [PATCH 3/8] just removing comments, still works --- .../Activity/TransactionDetailViewModel.swift | 16 +- .../Activity/TransactionListViewModel.swift | 4 +- .../View Model/OnboardingViewModel.swift | 146 ------------------ .../Settings/SettingsViewModel.swift | 21 --- .../View/Activity/TransactionDetailView.swift | 3 +- .../View/Activity/TransactionListView.swift | 3 +- .../View/Settings/SettingsView.swift | 3 +- 7 files changed, 7 insertions(+), 189 deletions(-) diff --git a/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift b/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift index 4ecd6f19..912e4df5 100644 --- a/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift @@ -41,28 +41,16 @@ class TransactionDetailViewModel { } func getEsploraUrl() { - // do { - let savedEsploraURL = bdkClient.getEsploraURL() //try keyClient.getEsploraURL() + let savedEsploraURL = bdkClient.getEsploraURL() if network == "Signet" { self.esploraURL = "https://mempool.space/signet" } else { self.esploraURL = savedEsploraURL } - // } catch let error as EsploraError { - // DispatchQueue.main.async { - // self.esploraError = error - // } - // } catch {} } func getNetwork() { - // do { - self.network = bdkClient.getNetwork().description //try keyClient.getNetwork() - // } catch { - // DispatchQueue.main.async { - // self.transactionDetailsError = .generic(message: error.localizedDescription) - // } - // } + self.network = bdkClient.getNetwork().description } func getSentAndReceived(tx: BitcoinDevKit.Transaction) -> SentAndReceivedValues? { diff --git a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift index 9179e193..67c3f3c1 100644 --- a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift @@ -36,12 +36,12 @@ class TransactionListViewModel { } func getEsploraURL() -> String? { - let savedEsploraURL = bdkClient.getEsploraURL() //try? keyClient.getEsploraURL() + let savedEsploraURL = bdkClient.getEsploraURL() return savedEsploraURL } func getNetwork() -> String? { - let savedNetwork = bdkClient.getNetwork().description //try? keyClient.getNetwork() + let savedNetwork = bdkClient.getNetwork().description return savedNetwork } diff --git a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift index b44a0140..4fd47893 100644 --- a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift @@ -19,31 +19,6 @@ class OnboardingViewModel: ObservableObject { @Published var createWithPersistError: CreateWithPersistError? @Published var networkColor = Color.gray @Published var onboardingViewError: AppError? - // @Published var selectedNetwork: Network = .signet { - // didSet { - // do { - // let networkString = selectedNetwork.description - // try keyClient.saveNetwork(networkString) - // selectedURL = availableURLs.first ?? "" - // try keyClient.saveEsploraURL(selectedURL) - // } catch { - // DispatchQueue.main.async { - // self.onboardingViewError = .generic(message: error.localizedDescription) - // } - // } - // } - // } - // @Published var selectedURL: String = "" { - // didSet { - // do { - // try keyClient.saveEsploraURL(selectedURL) - // } catch { - // DispatchQueue.main.async { - // self.onboardingViewError = .generic(message: error.localizedDescription) - // } - // } - // } - // } @Published var selectedNetwork: Network = .signet { didSet { print("OnboardingViewModel: Network changed from \(oldValue) to \(selectedNetwork)") @@ -76,18 +51,6 @@ class OnboardingViewModel: ObservableObject { return Constants.Config.EsploraServerURLNetwork.Signet.allValues } } - // private func availableURLs(for network: Network) -> [String] { - // switch network { - // case .signet: - // return Constants.Config.EsploraServerURLNetwork.Signet.allValues - // case .testnet: - // return Constants.Config.EsploraServerURLNetwork.Testnet.allValues - // case .bitcoin: - // return Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues - // case .regtest: - // return Constants.Config.EsploraServerURLNetwork.Regtest.allValues - // } - // } var buttonColor: Color { switch selectedNetwork { case .bitcoin: @@ -101,102 +64,6 @@ class OnboardingViewModel: ObservableObject { } } - // init( - // bdkClient: BDKClient = .live, - // keyClient: KeyClient = .live - // ) { - // self.bdkClient = bdkClient - // self.keyClient = keyClient - // print("OnboardingViewModel: Initializing") - // - // let currentNetwork = bdkClient.getNetwork() - // let currentURL = bdkClient.getEsploraURL() - // - // // Set network - // if let storedNetwork = try? keyClient.getNetwork().flatMap({ Network(stringValue: $0) }) { - // self.selectedNetwork = storedNetwork - // if storedNetwork != currentNetwork { - // print("OnboardingViewModel: Network changed from \(currentNetwork) to \(storedNetwork)") - // bdkClient.updateNetwork(storedNetwork) - // } else { - // print("OnboardingViewModel: Network unchanged: \(currentNetwork)") - // } - // } else { - // self.selectedNetwork = currentNetwork - // print("OnboardingViewModel: Using current network: \(currentNetwork)") - // } - // - // // Set Esplora URL - // if let storedURL = try? keyClient.getEsploraURL(), isValidURL(storedURL, for: self.selectedNetwork) { - // self.selectedURL = storedURL - // } else if isValidURL(currentURL, for: self.selectedNetwork) { - // self.selectedURL = currentURL - // } else { - // self.selectedURL = availableURLs(for: self.selectedNetwork).first ?? "" - // } - // - // if self.selectedURL != currentURL { - // print("OnboardingViewModel: Esplora URL changed from \(currentURL) to \(self.selectedURL)") - // bdkClient.updateEsploraURL(self.selectedURL) - // } else { - // print("OnboardingViewModel: Esplora URL unchanged: \(self.selectedURL)") - // } - // - // print("OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)") - // } - - // init( - // bdkClient: BDKClient = .live, - // keyClient: KeyClient = .live - // ) { - // self.bdkClient = bdkClient - // self.keyClient = keyClient - // print("OnboardingViewModel: Initializing") - // - // let currentNetwork = bdkClient.getNetwork() - // let currentURL = bdkClient.getEsploraURL() - // - // // Set network - // if let storedNetwork = try? keyClient.getNetwork().flatMap({ Network(stringValue: $0) }) { - // self.selectedNetwork = storedNetwork - // if storedNetwork != currentNetwork { - // print( - // "OnboardingViewModel: Network changed from \(currentNetwork) to \(storedNetwork)" - // ) - // bdkClient.updateNetwork(storedNetwork) - // } else { - // print("OnboardingViewModel: Network unchanged: \(currentNetwork)") - // } - // } else { - // self.selectedNetwork = currentNetwork - // print("OnboardingViewModel: Using current network: \(currentNetwork)") - // } - // - // // Set Esplora URL - // if let storedURL = try? keyClient.getEsploraURL(), - // isValidURL(storedURL, for: self.selectedNetwork) - // { - // self.selectedURL = storedURL - // } else if isValidURL(currentURL, for: self.selectedNetwork) { - // self.selectedURL = currentURL - // } else { - // self.selectedURL = availableURLs(for: self.selectedNetwork).first ?? "" - // } - // - // if self.selectedURL != currentURL { - // print( - // "OnboardingViewModel: Esplora URL changed from \(currentURL) to \(self.selectedURL)" - // ) - // bdkClient.updateEsploraURL(self.selectedURL) - // } else { - // print("OnboardingViewModel: Esplora URL unchanged: \(self.selectedURL)") - // } - // - // print( - // "OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)" - // ) - // } - init( bdkClient: BDKClient = .live ) { @@ -214,19 +81,6 @@ class OnboardingViewModel: ObservableObject { ) } - // private func isValidURL(_ url: String, for network: Network) -> Bool { - // switch network { - // case .signet: - // return Constants.Config.EsploraServerURLNetwork.Signet.allValues.contains(url) - // case .testnet: - // return Constants.Config.EsploraServerURLNetwork.Testnet.allValues.contains(url) - // case .bitcoin: - // return Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.contains(url) - // case .regtest: - // return Constants.Config.EsploraServerURLNetwork.Regtest.allValues.contains(url) - // } - // } - func createWallet() { do { try bdkClient.createWallet(words) diff --git a/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift b/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift index f97324a2..40538560 100644 --- a/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift @@ -92,27 +92,6 @@ class SettingsViewModel: ObservableObject { print("SettingsViewModel: Retrieved Esplora URL - \(self.esploraURL ?? "nil")") } - // func getNetwork() { - // do { - // self.network = try keyClient.getNetwork() - // } catch { - // DispatchQueue.main.async { - // self.settingsError = .generic(message: error.localizedDescription) - // self.showingSettingsViewErrorAlert = true - // } - // } - // } - // - // func getEsploraUrl() { - // do { - // self.esploraURL = try keyClient.getEsploraURL() - // } catch { - // DispatchQueue.main.async { - // self.settingsError = .generic(message: error.localizedDescription) - // } - // } - // } - private func updateProgressFullScan(inspected: UInt64) { DispatchQueue.main.async { self.inspectedScripts = inspected diff --git a/BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift b/BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift index 11333c49..ad6d7d59 100644 --- a/BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift +++ b/BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift @@ -173,8 +173,7 @@ struct TransactionDetailView: View { #Preview { TransactionDetailView( viewModel: .init( - bdkClient: .mock //, - // keyClient: .mock + bdkClient: .mock ), amount: UInt64(1_000_000), canonicalTx: .mock diff --git a/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift b/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift index 5c18d5ff..5e340335 100644 --- a/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift +++ b/BDKSwiftExampleWallet/View/Activity/TransactionListView.swift @@ -79,8 +79,7 @@ struct TransactionListView: View { NavigationLink( destination: TransactionDetailView( viewModel: .init( - bdkClient: .live //, - // keyClient: .live + bdkClient: .live ), amount: sentAndReceivedValues.sent.toSat() == 0 ? sentAndReceivedValues.received.toSat() diff --git a/BDKSwiftExampleWallet/View/Settings/SettingsView.swift b/BDKSwiftExampleWallet/View/Settings/SettingsView.swift index 33935c8b..5fb8b45b 100644 --- a/BDKSwiftExampleWallet/View/Settings/SettingsView.swift +++ b/BDKSwiftExampleWallet/View/Settings/SettingsView.swift @@ -146,8 +146,7 @@ struct SettingsView: View { #Preview { SettingsView( viewModel: .init( - bdkClient: .mock //, - // keyClient: .mock + bdkClient: .mock ) ) } From b770715540479cb1058a2cd4d8a01a96974c1707 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 13 Oct 2024 08:56:20 -0500 Subject: [PATCH 4/8] removing prints, still works --- .../Service/BDK Service/BDKService.swift | 16 ++-------------- .../View Model/OnboardingViewModel.swift | 7 ------- .../View Model/Settings/SettingsViewModel.swift | 9 --------- 3 files changed, 2 insertions(+), 30 deletions(-) diff --git a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift index a927d21f..0378feee 100644 --- a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift +++ b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift @@ -30,33 +30,27 @@ private class BDKService { try! keyClient.getEsploraURL() ?? Constants.Config.EsploraServerURLNetwork.Signet.mutiny self.esploraClient = EsploraClient(url: self.esploraURL) - print("BDKService initialized - Network: \(self.network), Esplora URL: \(self.esploraURL)") } func updateNetwork(_ newNetwork: Network) { if newNetwork != self.network { - print("Updating network from \(self.network) to \(newNetwork)") self.network = newNetwork try? keyClient.saveNetwork(newNetwork.description) updateEsploraClient() } else { - print("Network update skipped: already set to \(newNetwork)") } } func updateEsploraURL(_ newURL: String) { if newURL != self.esploraURL { - print("Updating Esplora URL from \(self.esploraURL) to \(newURL)") self.esploraURL = newURL try? keyClient.saveEsploraURL(newURL) updateEsploraClient() } else { - print("Esplora URL update skipped: already set to \(newURL)") } } private func updateEsploraClient() { - print("Updating Esplora client with URL: \(self.esploraURL)") self.esploraClient = EsploraClient(url: self.esploraURL) } @@ -379,21 +373,15 @@ extension BDKClient { needsFullScan: { BDKService.shared.needsFullScanOfWallet() }, setNeedsFullScan: { value in BDKService.shared.setNeedsFullScan(value) }, getNetwork: { - let network = BDKService.shared.network - print("BDKClient: Getting network - \(network)") - return network + BDKService.shared.network }, getEsploraURL: { - let url = BDKService.shared.esploraURL - print("BDKClient: Getting Esplora URL - \(url)") - return url + BDKService.shared.esploraURL }, updateNetwork: { newNetwork in - print("BDKClient: Updating network to \(newNetwork)") BDKService.shared.updateNetwork(newNetwork) }, updateEsploraURL: { newURL in - print("BDKClient: Updating Esplora URL to \(newURL)") BDKService.shared.updateEsploraURL(newURL) } ) diff --git a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift index 4fd47893..3aa5e373 100644 --- a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift @@ -21,7 +21,6 @@ class OnboardingViewModel: ObservableObject { @Published var onboardingViewError: AppError? @Published var selectedNetwork: Network = .signet { didSet { - print("OnboardingViewModel: Network changed from \(oldValue) to \(selectedNetwork)") bdkClient.updateNetwork(selectedNetwork) selectedURL = availableURLs.first ?? "" bdkClient.updateEsploraURL(selectedURL) @@ -29,7 +28,6 @@ class OnboardingViewModel: ObservableObject { } @Published var selectedURL: String = "" { didSet { - print("OnboardingViewModel: Esplora URL changed from \(oldValue) to \(selectedURL)") bdkClient.updateEsploraURL(selectedURL) } } @@ -68,17 +66,12 @@ class OnboardingViewModel: ObservableObject { bdkClient: BDKClient = .live ) { self.bdkClient = bdkClient - print("OnboardingViewModel: Initializing") let currentNetwork = bdkClient.getNetwork() let currentURL = bdkClient.getEsploraURL() self.selectedNetwork = currentNetwork self.selectedURL = currentURL - - print( - "OnboardingViewModel: Initialized with network \(self.selectedNetwork) and URL \(self.selectedURL)" - ) } func createWallet() { diff --git a/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift b/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift index 40538560..341fff1e 100644 --- a/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Settings/SettingsViewModel.swift @@ -24,22 +24,15 @@ class SettingsViewModel: ObservableObject { bdkClient: BDKClient = .live ) { self.bdkClient = bdkClient - print("SettingsViewModel: Initializing") self.network = bdkClient.getNetwork().description self.esploraURL = bdkClient.getEsploraURL() - print( - "SettingsViewModel: Initialized with network \(self.network ?? "nil") and URL \(self.esploraURL ?? "nil")" - ) } func delete() { - print("SettingsViewModel: Deleting wallet") do { try bdkClient.deleteWallet() isOnboarding = true - print("SettingsViewModel: Wallet deleted successfully") } catch { - print("SettingsViewModel: Error deleting wallet - \(error.localizedDescription)") self.settingsError = .generic(message: error.localizedDescription) self.showingSettingsViewErrorAlert = true } @@ -84,12 +77,10 @@ class SettingsViewModel: ObservableObject { func getNetwork() { self.network = bdkClient.getNetwork().description - print("SettingsViewModel: Retrieved network - \(self.network ?? "nil")") } func getEsploraUrl() { self.esploraURL = bdkClient.getEsploraURL() - print("SettingsViewModel: Retrieved Esplora URL - \(self.esploraURL ?? "nil")") } private func updateProgressFullScan(inspected: UInt64) { From 29f41b02e908147783cf3709ac00ec6ce1c68353 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 13 Oct 2024 09:03:37 -0500 Subject: [PATCH 5/8] misc: still works --- .../Service/BDK Service/BDKService.swift | 2 +- .../View Model/Activity/TransactionListViewModel.swift | 4 ++-- .../View Model/OnboardingViewModel.swift | 8 ++------ 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift index 0378feee..bb766b4d 100644 --- a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift +++ b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift @@ -435,7 +435,7 @@ extension BDKClient { needsFullScan: { true }, setNeedsFullScan: { _ in }, getNetwork: { .signet }, - getEsploraURL: { "https://blockstream.info/api" }, + getEsploraURL: { Constants.Config.EsploraServerURLNetwork.Signet.mutiny }, updateNetwork: { _ in }, updateEsploraURL: { _ in } ) diff --git a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift index 67c3f3c1..18a3d6a3 100644 --- a/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Activity/TransactionListViewModel.swift @@ -35,12 +35,12 @@ class TransactionListViewModel { } } - func getEsploraURL() -> String? { + func getEsploraURL() -> String { let savedEsploraURL = bdkClient.getEsploraURL() return savedEsploraURL } - func getNetwork() -> String? { + func getNetwork() -> String { let savedNetwork = bdkClient.getNetwork().description return savedNetwork } diff --git a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift index 3aa5e373..56b7a706 100644 --- a/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift @@ -66,12 +66,8 @@ class OnboardingViewModel: ObservableObject { bdkClient: BDKClient = .live ) { self.bdkClient = bdkClient - - let currentNetwork = bdkClient.getNetwork() - let currentURL = bdkClient.getEsploraURL() - - self.selectedNetwork = currentNetwork - self.selectedURL = currentURL + self.selectedNetwork = bdkClient.getNetwork() + self.selectedURL = bdkClient.getEsploraURL() } func createWallet() { From 4e77ae69ebcfa5ae56411b6d4959c3bf88ec2274 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 13 Oct 2024 09:05:15 -0500 Subject: [PATCH 6/8] misc: still works --- BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift | 3 --- 1 file changed, 3 deletions(-) diff --git a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift index bb766b4d..d353fe55 100644 --- a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift +++ b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift @@ -22,14 +22,11 @@ private class BDKService { init(keyClient: KeyClient = .live) { self.keyClient = keyClient - let storedNetworkString = try? keyClient.getNetwork() ?? Network.signet.description self.network = Network(stringValue: storedNetworkString ?? "") ?? .signet - self.esploraURL = try! keyClient.getEsploraURL() ?? Constants.Config.EsploraServerURLNetwork.Signet.mutiny self.esploraClient = EsploraClient(url: self.esploraURL) - } func updateNetwork(_ newNetwork: Network) { From a90895993e391ff5bd9600d74e84a25ecc9459ae Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 13 Oct 2024 09:06:16 -0500 Subject: [PATCH 7/8] misc: still works --- BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift | 2 -- 1 file changed, 2 deletions(-) diff --git a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift index d353fe55..29fb2fde 100644 --- a/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift +++ b/BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift @@ -34,7 +34,6 @@ private class BDKService { self.network = newNetwork try? keyClient.saveNetwork(newNetwork.description) updateEsploraClient() - } else { } } @@ -43,7 +42,6 @@ private class BDKService { self.esploraURL = newURL try? keyClient.saveEsploraURL(newURL) updateEsploraClient() - } else { } } From 4e1ccea54624a693eb7a432d24396df1b49ea5ca Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 13 Oct 2024 09:56:24 -0500 Subject: [PATCH 8/8] fix: open url to transaction on external explorer --- .../Activity/TransactionDetailViewModel.swift | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift b/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift index 912e4df5..02852c18 100644 --- a/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift +++ b/BDKSwiftExampleWallet/View Model/Activity/TransactionDetailViewModel.swift @@ -42,9 +42,21 @@ class TransactionDetailViewModel { func getEsploraUrl() { let savedEsploraURL = bdkClient.getEsploraURL() - if network == "Signet" { - self.esploraURL = "https://mempool.space/signet" - } else { + + switch network { + case "signet": + if savedEsploraURL == Constants.Config.EsploraServerURLNetwork.Signet.bdk { + self.esploraURL = "https://mempool.space/signet" + } else { + self.esploraURL = "https://mutinynet.com" + } + case "testnet": + if savedEsploraURL == Constants.Config.EsploraServerURLNetwork.Testnet.blockstream { + self.esploraURL = "https://blockstream.info/testnet" + } else { + self.esploraURL = "https://mempool.space/testnet" + } + default: self.esploraURL = savedEsploraURL } }