taler-ios

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

ExchangeDetailView.swift (2709B)


      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 taler_swift
     10 import SymLog
     11 
     12 struct ExchangeDetailView: View {
     13     private let symLog = SymLogV(0)
     14     let stack: CallStack
     15     let exchange: Exchange
     16 
     17     @Environment(\.sizeCategory) var sizeCategory
     18     @EnvironmentObject private var controller: Controller
     19     @EnvironmentObject private var model: WalletModel
     20     @EnvironmentObject private var tabBarModel: TabBarModel
     21     @AppStorage("minimalistic") var minimalistic: Bool = false
     22 
     23     var body: some View {
     24 #if PRINT_CHANGES
     25         let _ = Self._printChanges()
     26         let _ = symLog.vlog()       // just to get the # to compare it with .onAppear & onDisappear
     27         let delay: UInt = 0     // set to 5 to test delayed currency information
     28 #else
     29         let delay: UInt = 0
     30 #endif
     31         let baseURL = exchange.exchangeBaseUrl
     32         let rowView = HStack {
     33             if !minimalistic {
     34                 Text("Status:")
     35             }
     36             Text(exchange.exchangeUpdateStatus.rawValue)  // VIEW_WITHDRAW_TOS
     37         }
     38             .talerFont(.body)
     39         rowView
     40 
     41     }
     42 }
     43 // MARK: -
     44 #if DEBUG
     45 fileprivate struct ExchangeDetail_Previews: PreviewProvider {
     46     @MainActor
     47     struct BindingViewContainer : View {
     48 
     49         var body: some View {
     50             let scopeInfo = ScopeInfo(type: .exchange, currency: LONGCURRENCY)
     51             let exchange1 = Exchange(exchangeBaseUrl: ARS_AGE_EXCHANGE,
     52                                            masterPub: "masterPub",
     53                                            scopeInfo: scopeInfo,
     54                                            paytoUris: [],
     55                                            tosStatus: .pending,
     56                                  exchangeEntryStatus: .preset,
     57                                 exchangeUpdateStatus: .initial,
     58                                ageRestrictionOptions: [12,16])
     59             let exchange2 = Exchange(exchangeBaseUrl: ARS_EXP_EXCHANGE,
     60                                            masterPub: "masterPub",
     61                                            scopeInfo: scopeInfo,
     62                                            paytoUris: [],
     63                                            tosStatus: .proposed,
     64                                  exchangeEntryStatus: .ephemeral,
     65                                 exchangeUpdateStatus: .ready,
     66                                ageRestrictionOptions: [])
     67             ExchangeDetailView(stack: CallStack("Preview"),
     68                          exchange: exchange1)
     69         }
     70     }
     71 
     72     @MainActor
     73     static var previews: some View {
     74         List {
     75             BindingViewContainer()
     76         }
     77     }
     78 }
     79 #endif