Skip to content

Commit 297ce24

Browse files
authored
chore: persister+extensions
1 parent a0aa285 commit 297ce24

File tree

6 files changed

+66
-40
lines changed

6 files changed

+66
-40
lines changed

BDKSwiftExampleWallet.xcodeproj/project.pbxproj

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
779E70872DB9C98A006E22D3 /* WalletSyncScriptInspector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 779E70862DB9C98A006E22D3 /* WalletSyncScriptInspector.swift */; };
1212
779E70892DB9C9AB006E22D3 /* WalletFullScanScriptInspector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 779E70882DB9C9AB006E22D3 /* WalletFullScanScriptInspector.swift */; };
1313
77AD9F062DBB031D00182E65 /* ActivityHomeHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AD9F052DBB031D00182E65 /* ActivityHomeHeaderView.swift */; };
14-
77F0FDC92DA9A93D00B30E4F /* Connection+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77F0FDC82DA9A93700B30E4F /* Connection+Extensions.swift */; };
14+
77EDA65B2E2A5B4000A5E3AD /* URL+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77EDA65A2E2A5B3800A5E3AD /* URL+Extensions.swift */; };
15+
77F0FDC92DA9A93D00B30E4F /* Persister+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77F0FDC82DA9A93700B30E4F /* Persister+Extensions.swift */; };
1516
A733D6D02A81113000F333B4 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = A733D6CF2A81113000F333B4 /* Localizable.xcstrings */; };
1617
A73F7A362A3B778E00B87FC6 /* Int+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A73F7A352A3B778E00B87FC6 /* Int+Extensions.swift */; };
1718
AE0C30F72A804A2D008F1EAE /* TransactionListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE0C30F62A804A2D008F1EAE /* TransactionListView.swift */; };
@@ -121,7 +122,8 @@
121122
779E70862DB9C98A006E22D3 /* WalletSyncScriptInspector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletSyncScriptInspector.swift; sourceTree = "<group>"; };
122123
779E70882DB9C9AB006E22D3 /* WalletFullScanScriptInspector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletFullScanScriptInspector.swift; sourceTree = "<group>"; };
123124
77AD9F052DBB031D00182E65 /* ActivityHomeHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityHomeHeaderView.swift; sourceTree = "<group>"; };
124-
77F0FDC82DA9A93700B30E4F /* Connection+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Connection+Extensions.swift"; sourceTree = "<group>"; };
125+
77EDA65A2E2A5B3800A5E3AD /* URL+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URL+Extensions.swift"; sourceTree = "<group>"; };
126+
77F0FDC82DA9A93700B30E4F /* Persister+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persister+Extensions.swift"; sourceTree = "<group>"; };
125127
A733D6CF2A81113000F333B4 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
126128
A73F7A352A3B778E00B87FC6 /* Int+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Int+Extensions.swift"; sourceTree = "<group>"; };
127129
AE0C30F62A804A2D008F1EAE /* TransactionListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionListView.swift; sourceTree = "<group>"; };
@@ -564,7 +566,8 @@
564566
AEE6C74D2ABCB48600442ADD /* BDK+Extensions */ = {
565567
isa = PBXGroup;
566568
children = (
567-
77F0FDC82DA9A93700B30E4F /* Connection+Extensions.swift */,
569+
77EDA65A2E2A5B3800A5E3AD /* URL+Extensions.swift */,
570+
77F0FDC82DA9A93700B30E4F /* Persister+Extensions.swift */,
568571
AEE6C74B2ABCB3E200442ADD /* Transaction+Extensions.swift */,
569572
AE83EFDA2C9D07B200B41244 /* ChainPosition+Extensions.swift */,
570573
AE2381B02C60690900F6B00C /* LocalOutput+Extensions.swift */,
@@ -759,9 +762,10 @@
759762
AE783A012AB4E5E1005F0CBA /* BuildTransactionView.swift in Sources */,
760763
AE6F34DA2AA6C1E00087E700 /* Balance+Extensions.swift in Sources */,
761764
AED4CC0C2A1D3A9400CE1831 /* OnboardingView.swift in Sources */,
762-
77F0FDC92DA9A93D00B30E4F /* Connection+Extensions.swift in Sources */,
765+
77F0FDC92DA9A93D00B30E4F /* Persister+Extensions.swift in Sources */,
763766
AE6716012A9AC089005C193F /* KeyServiceError.swift in Sources */,
764767
77AD9F062DBB031D00182E65 /* ActivityHomeHeaderView.swift in Sources */,
768+
77EDA65B2E2A5B4000A5E3AD /* URL+Extensions.swift in Sources */,
765769
AE0C30FB2A804B95008F1EAE /* WalletViewModel.swift in Sources */,
766770
AE49847C2A1BBBD6009951E2 /* BDKSwiftExampleWalletApp.swift in Sources */,
767771
AE6715FF2A9AC066005C193F /* FeeServiceError.swift in Sources */,

BDKSwiftExampleWallet/Extensions/BDK+Extensions/Connection+Extensions.swift

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import BitcoinDevKit
2+
import Foundation
3+
4+
extension Persister {
5+
static func createConnection() throws -> Persister {
6+
try deleteConnection()
7+
try FileManager.default.ensureDirectoryExists(at: URL.walletDataDirectoryURL)
8+
try FileManager.default.removeOldFlatFileIfNeeded(at: URL.defaultWalletDirectory)
9+
let persister = try Persister.newSqlite(path: URL.persistenceBackendPath)
10+
return persister
11+
}
12+
13+
static func loadConnection() throws -> Persister {
14+
let persistenceBackendPath = URL.persistenceBackendPath
15+
let persister = try Persister.newSqlite(path: persistenceBackendPath)
16+
return persister
17+
}
18+
19+
static func deleteConnection() throws {
20+
let walletDataDirectoryURL = URL.walletDataDirectoryURL
21+
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
22+
try FileManager.default.removeItem(at: walletDataDirectoryURL)
23+
}
24+
}
25+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//
2+
// URL+Extensions.swift
3+
// BDKSwiftExampleWallet
4+
//
5+
// Created by Rubens Machion on 17/05/25.
6+
//
7+
8+
import Foundation
9+
10+
extension URL {
11+
12+
static var defaultWalletDirectory: URL {
13+
URL.documentsDirectory
14+
}
15+
16+
static var walletDirectoryName: String {
17+
"wallet_data"
18+
}
19+
20+
static var walletDBName: String {
21+
"wallet.sqlite"
22+
}
23+
24+
static var walletDataDirectoryURL: URL {
25+
defaultWalletDirectory.appendingPathComponent(walletDirectoryName)
26+
}
27+
28+
static var persistenceBackendPath: String {
29+
walletDataDirectoryURL.appendingPathComponent(walletDBName).path
30+
}
31+
}

BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -254,13 +254,7 @@ private class BDKService {
254254
}
255255

256256
private func loadWallet(descriptor: Descriptor, changeDescriptor: Descriptor) throws {
257-
let documentsDirectoryURL = URL.documentsDirectory
258-
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
259-
try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
260-
try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
261-
let persistenceBackendPath = walletDataDirectoryURL.appendingPathComponent("wallet.sqlite")
262-
.path
263-
let persister = try Persister.newSqlite(path: persistenceBackendPath)
257+
let persister = try Persister.loadConnection()
264258
self.persister = persister
265259
let wallet = try Wallet.load(
266260
descriptor: descriptor,
@@ -287,15 +281,8 @@ private class BDKService {
287281
if let bundleID = Bundle.main.bundleIdentifier {
288282
UserDefaults.standard.removePersistentDomain(forName: bundleID)
289283
}
290-
291284
try self.keyClient.deleteBackupInfo()
292-
293-
let documentsDirectoryURL = URL.documentsDirectory
294-
let walletDataDirectoryURL = documentsDirectoryURL.appendingPathComponent("wallet_data")
295-
if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
296-
try FileManager.default.removeItem(at: walletDataDirectoryURL)
297-
}
298-
285+
try Persister.deleteConnection()
299286
if let savedURL = savedURL {
300287
try keyClient.saveEsploraURL(savedURL)
301288
}

BDKSwiftExampleWallet/View Model/OnboardingViewModel.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ class OnboardingViewModel: ObservableObject {
8585

8686
func createWallet() {
8787
do {
88-
try bdkClient.deleteWallet()
8988
if isDescriptor {
9089
try bdkClient.createWalletFromDescriptor(words)
9190
} else if isXPub {

0 commit comments

Comments
 (0)