Skip to content

Commit c29f840

Browse files
committed
fix: saved esplora
1 parent f007eac commit c29f840

File tree

1 file changed

+91
-55
lines changed

1 file changed

+91
-55
lines changed

BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift

Lines changed: 91 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,26 @@ private class BDKService {
2525
let storedNetworkString = try? keyClient.getNetwork() ?? Network.signet.description
2626
self.network = Network(stringValue: storedNetworkString ?? "") ?? .signet
2727

28-
switch self.network {
29-
case .bitcoin:
30-
self.esploraURL = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
31-
case .testnet:
32-
self.esploraURL = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
33-
case .regtest:
34-
self.esploraURL = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
35-
case .signet:
36-
self.esploraURL = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
37-
case .testnet4:
38-
self.esploraURL =
39-
Constants.Config.EsploraServerURLNetwork.Testnet4.allValues.first ?? ""
28+
if let savedURL = try? keyClient.getEsploraURL() {
29+
self.esploraURL = savedURL
30+
} else {
31+
switch self.network {
32+
case .bitcoin:
33+
self.esploraURL =
34+
Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
35+
case .testnet:
36+
self.esploraURL =
37+
Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
38+
case .regtest:
39+
self.esploraURL =
40+
Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
41+
case .signet:
42+
self.esploraURL =
43+
Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
44+
case .testnet4:
45+
self.esploraURL =
46+
Constants.Config.EsploraServerURLNetwork.Testnet4.allValues.first ?? ""
47+
}
4048
}
4149

4250
self.esploraClient = EsploraClient(url: self.esploraURL)
@@ -119,26 +127,33 @@ private class BDKService {
119127
}
120128

121129
func createWallet(words: String?) throws {
130+
let savedURL = try? keyClient.getEsploraURL()
131+
122132
let documentsDirectoryURL = URL.documentsDirectory
123133
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
124134

125135
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
126136
try FileManager.default.removeItem(at: walletDataDirectoryURL)
127137
}
128138

129-
let baseUrl: String
130-
switch self.network {
131-
case .bitcoin:
132-
baseUrl = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
133-
case .testnet:
134-
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
135-
case .regtest:
136-
baseUrl = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
137-
case .signet:
138-
baseUrl = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
139-
case .testnet4:
140-
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet4.allValues.first ?? ""
141-
}
139+
let baseUrl =
140+
savedURL
141+
?? {
142+
let defaultURL =
143+
switch self.network {
144+
case .bitcoin:
145+
Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
146+
case .testnet:
147+
Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
148+
case .regtest:
149+
Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
150+
case .signet:
151+
Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
152+
case .testnet4:
153+
Constants.Config.EsploraServerURLNetwork.Testnet4.allValues.first ?? ""
154+
}
155+
return defaultURL
156+
}()
142157

143158
var words12: String
144159
if let words = words, !words.isEmpty {
@@ -193,27 +208,33 @@ private class BDKService {
193208
}
194209

195210
func createWallet(descriptor: String?) throws {
211+
let savedURL = try? keyClient.getEsploraURL()
212+
196213
let documentsDirectoryURL = URL.documentsDirectory
197214
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
198215

199216
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
200217
try FileManager.default.removeItem(at: walletDataDirectoryURL)
201-
} else {
202218
}
203219

204-
let baseUrl: String
205-
switch self.network {
206-
case .bitcoin:
207-
baseUrl = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
208-
case .testnet:
209-
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
210-
case .regtest:
211-
baseUrl = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
212-
case .signet:
213-
baseUrl = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
214-
case .testnet4:
215-
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet4.allValues.first ?? ""
216-
}
220+
let baseUrl =
221+
savedURL
222+
?? {
223+
let defaultURL =
224+
switch self.network {
225+
case .bitcoin:
226+
Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
227+
case .testnet:
228+
Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
229+
case .regtest:
230+
Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
231+
case .signet:
232+
Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
233+
case .testnet4:
234+
Constants.Config.EsploraServerURLNetwork.Testnet4.allValues.first ?? ""
235+
}
236+
return defaultURL
237+
}()
217238

218239
guard let descriptorString = descriptor, !descriptorString.isEmpty else {
219240
throw WalletError.walletNotFound
@@ -268,26 +289,33 @@ private class BDKService {
268289
}
269290

270291
func createWallet(xpub: String?) throws {
292+
let savedURL = try? keyClient.getEsploraURL()
293+
271294
let documentsDirectoryURL = URL.documentsDirectory
272295
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
273296

274297
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
275298
try FileManager.default.removeItem(at: walletDataDirectoryURL)
276299
}
277300

278-
let baseUrl: String
279-
switch self.network {
280-
case .bitcoin:
281-
baseUrl = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
282-
case .testnet:
283-
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
284-
case .regtest:
285-
baseUrl = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
286-
case .signet:
287-
baseUrl = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
288-
case .testnet4:
289-
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet4.allValues.first ?? ""
290-
}
301+
let baseUrl =
302+
savedURL
303+
?? {
304+
let defaultURL =
305+
switch self.network {
306+
case .bitcoin:
307+
Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
308+
case .testnet:
309+
Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
310+
case .regtest:
311+
Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
312+
case .signet:
313+
Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
314+
case .testnet4:
315+
Constants.Config.EsploraServerURLNetwork.Testnet4.allValues.first ?? ""
316+
}
317+
return defaultURL
318+
}()
291319

292320
guard let xpubString = xpub, !xpubString.isEmpty else {
293321
throw WalletError.walletNotFound
@@ -363,20 +391,28 @@ private class BDKService {
363391
}
364392

365393
func deleteWallet() throws {
394+
let savedURL = try? keyClient.getEsploraURL()
395+
let savedNetwork = try? keyClient.getNetwork()
396+
366397
if let bundleID = Bundle.main.bundleIdentifier {
367398
UserDefaults.standard.removePersistentDomain(forName: bundleID)
368399
}
400+
369401
try self.keyClient.deleteBackupInfo()
370-
try self.keyClient.deleteEsplora()
371-
try self.keyClient.deleteNetwork()
372402

373403
let documentsDirectoryURL = URL.documentsDirectory
374404
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
375-
376405
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
377406
try FileManager.default.removeItem(at: walletDataDirectoryURL)
378407
}
379408

409+
if let savedURL = savedURL {
410+
try keyClient.saveEsploraURL(savedURL)
411+
}
412+
if let savedNetwork = savedNetwork {
413+
try keyClient.saveNetwork(savedNetwork)
414+
}
415+
380416
needsFullScan = true
381417
}
382418

0 commit comments

Comments
 (0)