Skip to content

Commit 56d6608

Browse files
authored
fix: network switch
1 parent 9479c84 commit 56d6608

File tree

2 files changed

+84
-9
lines changed

2 files changed

+84
-9
lines changed

BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,26 @@ private class BDKService {
3131

3232
func updateNetwork(_ newNetwork: Network) {
3333
if newNetwork != self.network {
34+
if (try? keyClient.getBackupInfo()) != nil {
35+
return
36+
}
37+
3438
self.network = newNetwork
3539
try? keyClient.saveNetwork(newNetwork.description)
36-
updateEsploraClient()
40+
41+
let newURL: String
42+
switch newNetwork {
43+
case .bitcoin:
44+
newURL = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
45+
case .testnet:
46+
newURL = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
47+
case .regtest:
48+
newURL = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
49+
case .signet:
50+
newURL = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
51+
}
52+
updateEsploraURL(newURL)
53+
3754
}
3855
}
3956

@@ -92,11 +109,19 @@ private class BDKService {
92109

93110
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
94111
try FileManager.default.removeItem(at: walletDataDirectoryURL)
95-
} else {
96112
}
97113

98-
let baseUrl =
99-
try keyClient.getEsploraURL() ?? Constants.Config.EsploraServerURLNetwork.Signet.mutiny
114+
let baseUrl: String
115+
switch self.network {
116+
case .bitcoin:
117+
baseUrl = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
118+
case .testnet:
119+
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
120+
case .regtest:
121+
baseUrl = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
122+
case .signet:
123+
baseUrl = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
124+
}
100125

101126
var words12: String
102127
if let words = words, !words.isEmpty {
@@ -132,6 +157,8 @@ private class BDKService {
132157
try keyClient.saveBackupInfo(backupInfo)
133158
try keyClient.saveNetwork(self.network.description)
134159
try keyClient.saveEsploraURL(baseUrl)
160+
self.esploraURL = baseUrl
161+
updateEsploraClient()
135162

136163
try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
137164
try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
@@ -218,11 +245,19 @@ private class BDKService {
218245

219246
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
220247
try FileManager.default.removeItem(at: walletDataDirectoryURL)
221-
} else {
222248
}
223249

224-
let baseUrl =
225-
try keyClient.getEsploraURL() ?? Constants.Config.EsploraServerURLNetwork.Signet.mutiny
250+
let baseUrl: String
251+
switch self.network {
252+
case .bitcoin:
253+
baseUrl = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
254+
case .testnet:
255+
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
256+
case .regtest:
257+
baseUrl = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
258+
case .signet:
259+
baseUrl = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
260+
}
226261

227262
guard let xpubString = xpub, !xpubString.isEmpty else {
228263
throw WalletError.walletNotFound
@@ -252,6 +287,8 @@ private class BDKService {
252287
try keyClient.saveBackupInfo(backupInfo)
253288
try keyClient.saveNetwork(self.network.description)
254289
try keyClient.saveEsploraURL(baseUrl)
290+
self.esploraURL = baseUrl
291+
updateEsploraClient()
255292

256293
try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
257294
try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)

BDKSwiftExampleWallet/View Model/HomeViewModel.swift

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,48 @@ class HomeViewModel: ObservableObject {
2424
do {
2525
try bdkClient.loadWallet()
2626
} catch let error as DescriptorError {
27-
self.homeViewError = .generic(message: error.localizedDescription)
27+
let errorMessage: String
28+
switch error {
29+
case .InvalidHdKeyPath:
30+
errorMessage = "Invalid HD key path"
31+
case .InvalidDescriptorChecksum:
32+
errorMessage = "Invalid descriptor checksum"
33+
case .HardenedDerivationXpub:
34+
errorMessage = "Hardened derivation with xpub"
35+
case .MultiPath:
36+
errorMessage = "Multi-path descriptor"
37+
case .Key(let message):
38+
errorMessage = "Key error: \(message)"
39+
case .Policy(let message):
40+
errorMessage = "Policy error: \(message)"
41+
case .InvalidDescriptorCharacter(let char):
42+
errorMessage = "Invalid descriptor character: \(char)"
43+
case .Bip32(let message):
44+
errorMessage = "BIP32 error: \(message)"
45+
case .Base58(let message):
46+
errorMessage = "Base58 error: \(message)"
47+
case .Pk(let message):
48+
errorMessage = "Public key error: \(message)"
49+
case .Miniscript(let message):
50+
errorMessage = "Miniscript error: \(message)"
51+
case .Hex(let message):
52+
errorMessage = "Hex error: \(message)"
53+
case .ExternalAndInternalAreTheSame:
54+
errorMessage = "External and internal descriptors are the same"
55+
}
56+
self.homeViewError = .generic(message: errorMessage)
2857
self.showingHomeViewErrorAlert = true
2958
} catch let error as LoadWithPersistError {
30-
self.homeViewError = .generic(message: error.localizedDescription)
59+
let errorMessage: String
60+
switch error {
61+
case .Persist(let message):
62+
errorMessage = "Persist error: \(message)"
63+
case .InvalidChangeSet(let message):
64+
errorMessage = "Invalid change set: \(message)"
65+
case .CouldNotLoad:
66+
errorMessage = "Could not load wallet"
67+
}
68+
self.homeViewError = .generic(message: errorMessage)
3169
self.showingHomeViewErrorAlert = true
3270
} catch let error as KeyServiceError {
3371
self.homeViewError = .generic(message: error.localizedDescription)

0 commit comments

Comments
 (0)