1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/*
* This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
* See LICENSE.md
*/
import SwiftUI
import taler_swift
import SymLog
struct WithdrawAcceptDone: View {
private let symLog = SymLogV(0)
let stack: CallStack
let navTitle = String(localized: "Confirm with Bank")
let exchangeBaseUrl: String?
let url: URL
@EnvironmentObject private var controller: Controller
@EnvironmentObject private var model: WalletModel
@State private var transactionId: String? = nil
func reloadOneAction(_ transactionId: String, viewHandles: Bool) async throws -> Transaction {
return try await model.getTransactionByIdT(transactionId, viewHandles: viewHandles)
}
func dismissTopAnimated(_ stack: CallStack) {
dismissTop()
}
var body: some View {
#if PRINT_CHANGES
let _ = Self._printChanges()
let _ = symLog.vlog() // just to get the # to compare it with .onAppear & onDisappear
#endif
Group {
if let transactionId {
TransactionSummaryV(stack: stack.push(),
transactionId: transactionId,
reloadAction: reloadOneAction,
navTitle: navTitle,
doneAction: dismissTopAnimated,
abortAction: nil,
deleteAction: nil,
failAction: nil,
suspendAction: nil,
resumeAction: nil)
.navigationBarBackButtonHidden(true)
.interactiveDismissDisabled() // can only use "Done" button to dismiss
.navigationTitle(navTitle)
} else {
LoadingView(scopeInfo: nil, message: exchangeBaseUrl?.trimURL()
?? "Bank Confirmation")
}
}.onAppear() {
symLog.log("onAppear")
DebugViewC.shared.setSheetID(SHEET_WITHDRAW_CONFIRM)
}.task {
if let exchangeBaseUrl {
if let result = try? await model.sendAcceptIntWithdrawalM(exchangeBaseUrl, withdrawURL: url.absoluteString) {
let confirmTransferUrl = result.confirmTransferUrl
symLog.log(confirmTransferUrl)
transactionId = result.transactionId
}
}
}
}
}
// MARK: -
struct WithdrawAcceptDone_Previews: PreviewProvider {
static var previews: some View {
WithdrawAcceptDone(stack: CallStack("Preview"),
exchangeBaseUrl: DEMOEXCHANGE,
url: URL(string: DEMOSHOP)!)
}
}
|