RefundURIView.swift (2626B)
1 /* 2 * This file is part of GNU Taler, ©2022-26 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 @State var refundTransactionId: String? = nil 21 // @State var transaction: Transaction? 22 // @State private var currencyInfo: CurrencyInfo = CurrencyInfo.zero(UNKNOWN) 23 @State private var talerTX: TalerTransaction = TalerTransaction(dummyCurrency: DEMOCURRENCY) 24 25 @MainActor 26 private func viewDidLoad() async { 27 symLog.log(".task") 28 if let result = try? await model.startRefundForUri(url: url.trimmedString) { 29 refundTransactionId = result 30 // transaction = try? await model.getTransactionById(result) 31 } 32 } 33 34 var body: some View { 35 ZStack { 36 if let refundTransactionId { //, let transaction { 37 // let common = transaction.common 38 // let scope = common.scopes[0] // TODO: tx could span multiple scopes 39 // let raw = common.amountRaw 40 // let currency = raw.currencyStr 41 42 TransactionSummaryList(stack: stack.push(), 43 // scope: scope, 44 transactionId: refundTransactionId, 45 talerTX: $talerTX, 46 navTitle: nil, 47 hasDone: true, // conclude refund 48 showDone: .prominent, 49 url: nil, 50 withActions: true) 51 // .task(id: controller.currencyTicker) { 52 // currencyInfo = controller.info2(for: currency, controller.currencyTicker) 53 // } 54 } else { 55 LoadingView(stack: stack.push(), scopeInfo: nil, message: url.host) 56 .task { await viewDidLoad() } 57 } 58 }.onAppear() { 59 symLog.log("onAppear") 60 DebugViewC.shared.setSheetID(SHEET_REFUND, stack: stack.push()) 61 } 62 } 63 } 64 65 // MARK: - 66 struct RefundURIView_Previews: PreviewProvider { 67 static var previews: some View { 68 let transactionId = "txn:refund:12345" 69 let url = URL(string: "taler://refund/txId")! 70 RefundURIView(stack: CallStack("Preview"), url: url, refundTransactionId: transactionId) 71 } 72 }