Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 44 additions & 7 deletions BDKSwiftExampleWallet/Service/BDK Service/BDKService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,26 @@ private class BDKService {

func updateNetwork(_ newNetwork: Network) {
if newNetwork != self.network {
if (try? keyClient.getBackupInfo()) != nil {
return
}

self.network = newNetwork
try? keyClient.saveNetwork(newNetwork.description)
updateEsploraClient()

let newURL: String
switch newNetwork {
case .bitcoin:
newURL = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
case .testnet:
newURL = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
case .regtest:
newURL = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
case .signet:
newURL = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
}
updateEsploraURL(newURL)

}
}

Expand Down Expand Up @@ -92,11 +109,19 @@ private class BDKService {

if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
try FileManager.default.removeItem(at: walletDataDirectoryURL)
} else {
}

let baseUrl =
try keyClient.getEsploraURL() ?? Constants.Config.EsploraServerURLNetwork.Signet.mutiny
let baseUrl: String
switch self.network {
case .bitcoin:
baseUrl = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
case .testnet:
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
case .regtest:
baseUrl = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
case .signet:
baseUrl = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
}

var words12: String
if let words = words, !words.isEmpty {
Expand Down Expand Up @@ -132,6 +157,8 @@ private class BDKService {
try keyClient.saveBackupInfo(backupInfo)
try keyClient.saveNetwork(self.network.description)
try keyClient.saveEsploraURL(baseUrl)
self.esploraURL = baseUrl
updateEsploraClient()

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

if FileManager.default.fileExists(atPath: walletDataDirectoryURL.path) {
try FileManager.default.removeItem(at: walletDataDirectoryURL)
} else {
}

let baseUrl =
try keyClient.getEsploraURL() ?? Constants.Config.EsploraServerURLNetwork.Signet.mutiny
let baseUrl: String
switch self.network {
case .bitcoin:
baseUrl = Constants.Config.EsploraServerURLNetwork.Bitcoin.allValues.first ?? ""
case .testnet:
baseUrl = Constants.Config.EsploraServerURLNetwork.Testnet.allValues.first ?? ""
case .regtest:
baseUrl = Constants.Config.EsploraServerURLNetwork.Regtest.allValues.first ?? ""
case .signet:
baseUrl = Constants.Config.EsploraServerURLNetwork.Signet.allValues.first ?? ""
}

guard let xpubString = xpub, !xpubString.isEmpty else {
throw WalletError.walletNotFound
Expand Down Expand Up @@ -252,6 +287,8 @@ private class BDKService {
try keyClient.saveBackupInfo(backupInfo)
try keyClient.saveNetwork(self.network.description)
try keyClient.saveEsploraURL(baseUrl)
self.esploraURL = baseUrl
updateEsploraClient()

try FileManager.default.ensureDirectoryExists(at: walletDataDirectoryURL)
try FileManager.default.removeOldFlatFileIfNeeded(at: documentsDirectoryURL)
Expand Down
42 changes: 40 additions & 2 deletions BDKSwiftExampleWallet/View Model/HomeViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,48 @@ class HomeViewModel: ObservableObject {
do {
try bdkClient.loadWallet()
} catch let error as DescriptorError {
self.homeViewError = .generic(message: error.localizedDescription)
let errorMessage: String
switch error {
case .InvalidHdKeyPath:
errorMessage = "Invalid HD key path"
case .InvalidDescriptorChecksum:
errorMessage = "Invalid descriptor checksum"
case .HardenedDerivationXpub:
errorMessage = "Hardened derivation with xpub"
case .MultiPath:
errorMessage = "Multi-path descriptor"
case .Key(let message):
errorMessage = "Key error: \(message)"
case .Policy(let message):
errorMessage = "Policy error: \(message)"
case .InvalidDescriptorCharacter(let char):
errorMessage = "Invalid descriptor character: \(char)"
case .Bip32(let message):
errorMessage = "BIP32 error: \(message)"
case .Base58(let message):
errorMessage = "Base58 error: \(message)"
case .Pk(let message):
errorMessage = "Public key error: \(message)"
case .Miniscript(let message):
errorMessage = "Miniscript error: \(message)"
case .Hex(let message):
errorMessage = "Hex error: \(message)"
case .ExternalAndInternalAreTheSame:
errorMessage = "External and internal descriptors are the same"
}
self.homeViewError = .generic(message: errorMessage)
self.showingHomeViewErrorAlert = true
} catch let error as LoadWithPersistError {
self.homeViewError = .generic(message: error.localizedDescription)
let errorMessage: String
switch error {
case .Persist(let message):
errorMessage = "Persist error: \(message)"
case .InvalidChangeSet(let message):
errorMessage = "Invalid change set: \(message)"
case .CouldNotLoad:
errorMessage = "Could not load wallet"
}
self.homeViewError = .generic(message: errorMessage)
self.showingHomeViewErrorAlert = true
} catch let error as KeyServiceError {
self.homeViewError = .generic(message: error.localizedDescription)
Expand Down