RefundURIView.swift (2866B)
1 /* 2 * This file is part of GNU Taler, ©2022-25 Taler Systems S.A. 3 * See LICENSE.md 4 */ 5 /** 6 * @author Marc Stibane 7 */ 8 import SwiftUI 9 import SymLog 10 import taler_swift 11 12 struct RefundURIView: View { 13 private let symLog = SymLogV(0) 14 let stack: CallStack 15 let url: URL 16 17 @EnvironmentObject private var model: WalletModel 18 @EnvironmentObject private var controller: Controller 19 20 // let navTitle = String(localized: "Refund", comment:"receive refund") 21 22 @State var refundTransactionId: String? = nil 23 // @State var transaction: Transaction? 24 // @State private var currencyInfo: CurrencyInfo = CurrencyInfo.zero(UNKNOWN) 25 @State private var talerTX: TalerTransaction = TalerTransaction(dummyCurrency: DEMOCURRENCY) 26 27 @MainActor 28 private func viewDidLoad() async { 29 symLog.log(".task") 30 if let result = try? await model.startRefundForUri(url: url.absoluteString) { 31 refundTransactionId = result 32 // transaction = try? await model.getTransactionById(result) 33 } 34 } 35 36 var body: some View { 37 if let refundTransactionId { //, let transaction { 38 // let common = transaction.common 39 // let scope = common.scopes[0] // TODO: tx could span multiple scopes 40 // let raw = common.amountRaw 41 // let currency = raw.currencyStr 42 43 TransactionSummaryV(stack: stack.push(), 44 // scope: scope, 45 transactionId: refundTransactionId, 46 talerTX: $talerTX, 47 navTitle: nil, // navTitle, 48 hasDone: true, 49 abortAction: model.abortTransaction, 50 deleteAction: model.deleteTransaction, 51 failAction: model.failTransaction, 52 suspendAction: model.suspendTransaction, 53 resumeAction: model.resumeTransaction) 54 .safeAreaInset(edge: .bottom) { 55 Button("Done") { dismissTop(stack.push()) } 56 .buttonStyle(TalerButtonStyle(type: .prominent)) 57 .padding(.horizontal) 58 } 59 // .task(id: controller.currencyTicker) { 60 // currencyInfo = controller.info2(for: currency, controller.currencyTicker) 61 // } 62 } else { 63 LoadingView(stack: stack.push(), scopeInfo: nil, message: url.host) 64 .task { await viewDidLoad() } 65 } 66 } 67 } 68 69 // MARK: - 70 struct RefundURIView_Previews: PreviewProvider { 71 static var previews: some View { 72 let transactionId = "txn:refund:12345" 73 let url = URL(string: "taler://refund/txId")! 74 RefundURIView(stack: CallStack("Preview"), url: url, refundTransactionId: transactionId) 75 } 76 }