Skip to content

Commit 51f97a9

Browse files
RubensRubens
authored andcommitted
improv: simplify BDK's connection in BDKService
1 parent f87f86e commit 51f97a9

File tree

3 files changed

+64
-40
lines changed

3 files changed

+64
-40
lines changed

BDKSwiftExampleWallet.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
77F0FDC92DA9A93D00B30E4F /* Connection+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77F0FDC82DA9A93700B30E4F /* Connection+Extensions.swift */; };
1011
A733D6D02A81113000F333B4 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = A733D6CF2A81113000F333B4 /* Localizable.xcstrings */; };
1112
A73F7A362A3B778E00B87FC6 /* Int+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A73F7A352A3B778E00B87FC6 /* Int+Extensions.swift */; };
1213
AE0C30F72A804A2D008F1EAE /* TransactionListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE0C30F62A804A2D008F1EAE /* TransactionListView.swift */; };
@@ -107,6 +108,7 @@
107108
/* End PBXContainerItemProxy section */
108109

109110
/* Begin PBXFileReference section */
111+
77F0FDC82DA9A93700B30E4F /* Connection+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Connection+Extensions.swift"; sourceTree = "<group>"; };
110112
A733D6CF2A81113000F333B4 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
111113
A73F7A352A3B778E00B87FC6 /* Int+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Int+Extensions.swift"; sourceTree = "<group>"; };
112114
AE0C30F62A804A2D008F1EAE /* TransactionListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionListView.swift; sourceTree = "<group>"; };
@@ -524,6 +526,7 @@
524526
AEE6C74D2ABCB48600442ADD /* BDK+Extensions */ = {
525527
isa = PBXGroup;
526528
children = (
529+
77F0FDC82DA9A93700B30E4F /* Connection+Extensions.swift */,
527530
AEE6C74B2ABCB3E200442ADD /* Transaction+Extensions.swift */,
528531
AE83EFDA2C9D07B200B41244 /* ChainPosition+Extensions.swift */,
529532
AE2381B02C60690900F6B00C /* LocalOutput+Extensions.swift */,
@@ -707,6 +710,7 @@
707710
AE783A012AB4E5E1005F0CBA /* BuildTransactionView.swift in Sources */,
708711
AE6F34DA2AA6C1E00087E700 /* Balance+Extensions.swift in Sources */,
709712
AED4CC0C2A1D3A9400CE1831 /* OnboardingView.swift in Sources */,
713+
77F0FDC92DA9A93D00B30E4F /* Connection+Extensions.swift in Sources */,
710714
AE6716012A9AC089005C193F /* KeyServiceError.swift in Sources */,
711715
AE0C30FB2A804B95008F1EAE /* WalletViewModel.swift in Sources */,
712716
AE49847C2A1BBBD6009951E2 /* BDKSwiftExampleWalletApp.swift in Sources */,
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import BitcoinDevKit
2+
import Foundation
3+
4+
extension Connection {
5+
static func createConnection() throws -> Connection {
6+
let documentsDirectoryURL = URL.documentsDirectory
7+
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
8+
9+
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
10+
try FileManager.default.removeItem(at: walletDataDirectoryURL)
11+
}
12+
13+
try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
14+
try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
15+
let persistenceBackendPath = walletDataDirectoryURL.appendingPathComponent("wallet.sqlite")
16+
.path
17+
let connection = try Connection(path: persistenceBackendPath)
18+
return connection
19+
}
20+
}

BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,12 @@ private class BDKService {
9494
}
9595

9696
func createWallet(words: String?) throws {
97-
let savedURL = try? keyClient.getEsploraURL()
98-
99-
let documentsDirectoryURL = URL.documentsDirectory
100-
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
101-
102-
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
103-
try FileManager.default.removeItem(at: walletDataDirectoryURL)
97+
self.connection = try Connection.createConnection()
98+
guard let connection = connection else {
99+
throw WalletError.dbNotFound
104100
}
105-
101+
102+
let savedURL = try? keyClient.getEsploraURL()
106103
let baseUrl = savedURL ?? network.url
107104

108105
var words12: String
@@ -141,13 +138,7 @@ private class BDKService {
141138
try keyClient.saveEsploraURL(baseUrl)
142139
self.esploraURL = baseUrl
143140
updateEsploraClient()
144-
145-
try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
146-
try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
147-
let persistenceBackendPath = walletDataDirectoryURL.appendingPathComponent("wallet.sqlite")
148-
.path
149-
let connection = try Connection(path: persistenceBackendPath)
150-
self.connection = connection
141+
151142
let wallet = try Wallet(
152143
descriptor: descriptor,
153144
changeDescriptor: changeDescriptor,
@@ -158,14 +149,19 @@ private class BDKService {
158149
}
159150

160151
func createWallet(descriptor: String?) throws {
152+
self.connection = try Connection.createConnection()
153+
guard let connection = connection else {
154+
throw WalletError.dbNotFound
155+
}
156+
161157
let savedURL = try? keyClient.getEsploraURL()
162158

163-
let documentsDirectoryURL = URL.documentsDirectory
164-
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
165-
166-
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
167-
try FileManager.default.removeItem(at: walletDataDirectoryURL)
168-
}
159+
// let documentsDirectoryURL = URL.documentsDirectory
160+
// let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
161+
//
162+
// if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
163+
// try FileManager.default.removeItem(at: walletDataDirectoryURL)
164+
// }
169165

170166
let baseUrl = savedURL ?? network.url
171167

@@ -206,12 +202,12 @@ private class BDKService {
206202
try keyClient.saveNetwork(self.network.description)
207203
try keyClient.saveEsploraURL(baseUrl)
208204

209-
try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
210-
try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
211-
let persistenceBackendPath = walletDataDirectoryURL.appendingPathComponent("wallet.sqlite")
212-
.path
213-
let connection = try Connection(path: persistenceBackendPath)
214-
self.connection = connection
205+
// try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
206+
// try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
207+
// let persistenceBackendPath = walletDataDirectoryURL.appendingPathComponent("wallet.sqlite")
208+
// .path
209+
// let connection = try Connection(path: persistenceBackendPath)
210+
// self.connection = connection
215211
let wallet = try Wallet(
216212
descriptor: descriptor,
217213
changeDescriptor: changeDescriptor,
@@ -222,14 +218,19 @@ private class BDKService {
222218
}
223219

224220
func createWallet(xpub: String?) throws {
221+
self.connection = try Connection.createConnection()
222+
guard let connection = connection else {
223+
throw WalletError.dbNotFound
224+
}
225+
225226
let savedURL = try? keyClient.getEsploraURL()
226227

227-
let documentsDirectoryURL = URL.documentsDirectory
228-
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
229-
230-
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
231-
try FileManager.default.removeItem(at: walletDataDirectoryURL)
232-
}
228+
// let documentsDirectoryURL = URL.documentsDirectory
229+
// let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
230+
//
231+
// if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
232+
// try FileManager.default.removeItem(at: walletDataDirectoryURL)
233+
// }
233234

234235
let baseUrl = savedURL ?? network.url
235236

@@ -264,12 +265,12 @@ private class BDKService {
264265
self.esploraURL = baseUrl
265266
updateEsploraClient()
266267

267-
try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
268-
try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
269-
let persistenceBackendPath = walletDataDirectoryURL.appendingPathComponent("wallet.sqlite")
270-
.path
271-
let connection = try Connection(path: persistenceBackendPath)
272-
self.connection = connection
268+
// try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
269+
// try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
270+
// let persistenceBackendPath = walletDataDirectoryURL.appendingPathComponent("wallet.sqlite")
271+
// .path
272+
// let connection = try Connection(path: persistenceBackendPath)
273+
// self.connection = connection
273274
let wallet = try Wallet(
274275
descriptor: descriptor,
275276
changeDescriptor: changeDescriptor,
@@ -438,7 +439,6 @@ private class BDKService {
438439
let values = wallet.sentAndReceived(tx: tx)
439440
return values
440441
}
441-
442442
}
443443

444444
extension BDKService {

0 commit comments

Comments
 (0)