taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

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 }