taler-ios

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

RefundURIView.swift (2645B)


      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 //    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         ZStack {
     38             if let refundTransactionId {    //, let transaction {
     39 //            let common = transaction.common
     40 //            let scope = common.scopes[0]              // TODO: tx could span multiple scopes
     41 //            let raw = common.amountRaw
     42 //            let currency = raw.currencyStr
     43 
     44                 TransactionSummaryList(stack: stack.push(),
     45 //                                     scope: scope,
     46                             transactionId: refundTransactionId,
     47                                   talerTX: $talerTX,
     48                                  navTitle: nil,   // navTitle,
     49                                   hasDone: true,
     50                                  showDone: .prominent,
     51                                       url: nil,
     52                               withActions: true)
     53 //                .task(id: controller.currencyTicker) {
     54 //                    currencyInfo = controller.info2(for: currency, controller.currencyTicker)
     55 //                }
     56             } else {
     57                 LoadingView(stack: stack.push(), scopeInfo: nil, message: url.host)
     58                     .task { await viewDidLoad() }
     59             }
     60         }.onAppear() {
     61             symLog.log("onAppear")
     62             DebugViewC.shared.setSheetID(SHEET_REFUND)
     63         }
     64     }
     65 }
     66 
     67 // MARK: -
     68 struct RefundURIView_Previews: PreviewProvider {
     69     static var previews: some View {
     70         let transactionId = "txn:refund:12345"
     71         let url = URL(string: "taler://refund/txId")!
     72         RefundURIView(stack: CallStack("Preview"), url: url, refundTransactionId: transactionId)
     73     }
     74 }