Skip to content

Commit 5b3dc5f

Browse files
committed
ui: export descriptor
1 parent 10d8a07 commit 5b3dc5f

File tree

3 files changed

+50
-11
lines changed

3 files changed

+50
-11
lines changed

BDKSwiftExampleWallet/Resources/Localizable.xcstrings

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@
289289
}
290290
},
291291
"Copy" : {
292+
"extractionState" : "stale",
292293
"localizations" : {
293294
"fr" : {
294295
"stringUnit" : {
@@ -327,6 +328,9 @@
327328
}
328329
}
329330
}
331+
},
332+
"Descriptor" : {
333+
330334
},
331335
"Destructive Zone" : {
332336
"localizations" : {
@@ -576,6 +580,9 @@
576580
}
577581
}
578582
}
583+
},
584+
"Seed" : {
585+
579586
},
580587
"Seed is not synced across devices." : {
581588

BDKSwiftExampleWallet/View Model/Settings/SeedViewModel.swift

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,30 @@ import SwiftUI
1313
@MainActor
1414
class SeedViewModel {
1515
let bdkService: BDKClient
16+
let keyService: KeyClient
1617

17-
var seed: BackupInfo?
18+
var backupInfo: BackupInfo?
1819
var seedViewError: AppError?
1920
var showingSeedViewErrorAlert: Bool
2021

2122
init(
2223
bdkService: BDKClient = .live,
23-
seed: BackupInfo? = nil,
24+
keyService: KeyClient = .live,
25+
backupInfo: BackupInfo? = nil,
2426
seedViewError: AppError? = nil,
2527
showingSeedViewErrorAlert: Bool = false
2628
) {
2729
self.bdkService = bdkService
28-
self.seed = seed
30+
self.keyService = keyService
31+
self.backupInfo = backupInfo
2932
self.seedViewError = seedViewError
3033
self.showingSeedViewErrorAlert = showingSeedViewErrorAlert
3134
}
3235

33-
func getSeed() {
36+
func getBackupInfo() {
3437
do {
35-
let seed = try bdkService.getBackupInfo()
36-
self.seed = seed
38+
let backupInfo = try bdkService.getBackupInfo()
39+
self.backupInfo = backupInfo
3740
} catch {
3841
self.seedViewError = .generic(message: error.localizedDescription)
3942
self.showingSeedViewErrorAlert = true

BDKSwiftExampleWallet/View/Settings/SeedView.swift

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ struct SeedView: View {
2020
.ignoresSafeArea()
2121

2222
VStack {
23-
if let seed = viewModel.seed {
23+
if let backupInfo = viewModel.backupInfo {
2424

2525
SeedPhraseView(
26-
words: seed.mnemonic.components(separatedBy: " "),
26+
words: backupInfo.mnemonic.components(separatedBy: " "),
2727
preferredWordsPerRow: 2,
2828
usePaging: true,
2929
wordsPerPage: 4
@@ -41,7 +41,7 @@ struct SeedView: View {
4141
HStack {
4242
Spacer()
4343
Button {
44-
UIPasteboard.general.string = seed.mnemonic
44+
UIPasteboard.general.string = backupInfo.mnemonic
4545
isCopied = true
4646
showCheckmark = true
4747
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
@@ -55,7 +55,7 @@ struct SeedView: View {
5555
? "document.on.document.fill" : "document.on.document"
5656
)
5757
.contentTransition(.symbolEffect(.replace))
58-
Text("Copy")
58+
Text("Seed")
5959
.bold()
6060
}
6161
}
@@ -70,6 +70,35 @@ struct SeedView: View {
7070
)
7171
Spacer()
7272
}
73+
74+
HStack {
75+
Spacer()
76+
77+
let formattedDescriptors = """
78+
External: \(backupInfo.descriptor)
79+
80+
Internal: \(backupInfo.changeDescriptor)
81+
"""
82+
83+
ShareLink(item: formattedDescriptors) {
84+
HStack {
85+
Image(systemName: "square.and.arrow.up")
86+
Text("Descriptor")
87+
.bold()
88+
}
89+
}
90+
.buttonStyle(
91+
BitcoinFilled(
92+
width: 160,
93+
height: 40,
94+
tintColor: .primary,
95+
textColor: Color(uiColor: .systemBackground),
96+
isCapsule: true
97+
)
98+
)
99+
100+
Spacer()
101+
}
73102
.padding()
74103
} else {
75104
Text("No seed available")
@@ -79,7 +108,7 @@ struct SeedView: View {
79108
}
80109
.padding()
81110
.onAppear {
82-
viewModel.getSeed()
111+
viewModel.getBackupInfo()
83112
}
84113
}
85114
.alert(isPresented: $viewModel.showingSeedViewErrorAlert) {

0 commit comments

Comments
 (0)