taler-ios

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

commit 3384b0f0db6e5b69f9ba4cfe8762d8daa1430e64
parent 01d342fb5d99632c4125922a305acaad56bd3d7c
Author: Marc Stibane <marc@taler.net>
Date:   Mon, 28 Apr 2025 06:14:28 +0200

cash direct instead environment

Diffstat:
MTalerWallet1/Views/Actions/Peer2peer/P2PSubjectV.swift | 2++
MTalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift | 7+++++++
MTalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift | 5+++++
MTalerWallet1/Views/Actions/Peer2peer/SendAmountView.swift | 3+++
MTalerWallet1/Views/OIM/OIMView.swift | 12+++++++-----
MTalerWallet1/Views/OIM/OIMcurrencyScroller.swift | 2+-
MTalerWallet1/Views/OIM/OIMlayout.swift | 2+-
MTalerWallet1/Views/OIM/OIMlineView.swift | 4+++-
MTalerWallet1/Views/OIM/OIMpayView.swift | 2+-
9 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/TalerWallet1/Views/Actions/Peer2peer/P2PSubjectV.swift b/TalerWallet1/Views/Actions/Peer2peer/P2PSubjectV.swift @@ -21,6 +21,7 @@ func p2pFee(ppCheck: CheckPeerPushDebitResponse) -> Amount? { struct P2PSubjectV: View { private let symLog = SymLogV(0) let stack: CallStack + let cash: OIMcash let scope: ScopeInfo let feeLabel: (String, String)? let feeIsNotZero: Bool? // nil = no fees at all, false = no fee for this tx @@ -181,6 +182,7 @@ struct P2PSubjectV: View { if #available(iOS 16.4, *) { if controller.oimModeActive { OIMSubjectView(stack: stack.push(), + cash: cash, amount: $amountToTransfer, fwdButtonTapped: $sendOrRequest) .environmentObject(NamespaceWrapper(namespace)) // keep OIMviews apart diff --git a/TalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift b/TalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift @@ -19,6 +19,9 @@ struct RequestPayment: View { @EnvironmentObject private var controller: Controller +#if OIM + @StateObject private var cash = OIMcash() +#endif @State private var balanceIndex = 0 @State private var balance: Balance? = nil // nil only when balances == [] @State private var currencyInfo: CurrencyInfo = CurrencyInfo.zero(UNKNOWN) @@ -76,6 +79,7 @@ struct RequestPayment: View { } if let balance { RequestPaymentContent(stack: stack.push(), + cash: cash, balance: balance, amountLastUsed: $amountLastUsed, amountToTransfer: $amountToTransfer, @@ -102,6 +106,7 @@ struct RequestPayment: View { struct RequestPaymentContent: View { private let symLog = SymLogV(0) let stack: CallStack + let cash: OIMcash let balance: Balance @Binding var amountLastUsed: Amount @Binding var amountToTransfer: Amount @@ -226,6 +231,7 @@ struct RequestPaymentContent: View { feeZero: String(localized: "No fee"), isNegative: false) let inputDestination = P2PSubjectV(stack: stack.push(), + cash: cash, scope: balance.scopeInfo, feeLabel: feeLabel, feeIsNotZero: feeIsNotZero(), @@ -234,6 +240,7 @@ struct RequestPaymentContent: View { summary: $summary, expireDays: $expireDays) let shortcutDestination = P2PSubjectV(stack: stack.push(), + cash: cash, scope: balance.scopeInfo, feeLabel: nil, feeIsNotZero: feeIsNotZero(), diff --git a/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift b/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift @@ -20,6 +20,9 @@ struct SendAmountV: View { @EnvironmentObject private var controller: Controller @EnvironmentObject private var model: WalletModel +#if OIM + @StateObject private var cash = OIMcash() +#endif @State private var balanceIndex = 0 @State private var balance: Balance? = nil // nil only when balances == [] @State private var currencyInfo: CurrencyInfo = CurrencyInfo.zero(UNKNOWN) @@ -90,6 +93,7 @@ struct SendAmountV: View { } if let balance { SendAmountView(stack: stack.push(), + cash: cash, balance: balance, buttonSelected: $buttonSelected, amountLastUsed: $amountLastUsed, @@ -110,6 +114,7 @@ struct SendAmountV: View { if #available(iOS 16.4, *) { if controller.oimModeActive { OIMEditView(stack: stack.push(), + cash: cash, amount: $amountToTransfer, available: $amountAvailable, useAvailable: true, // cannot send more than we have diff --git a/TalerWallet1/Views/Actions/Peer2peer/SendAmountView.swift b/TalerWallet1/Views/Actions/Peer2peer/SendAmountView.swift @@ -13,6 +13,7 @@ import SymLog struct SendAmountView: View { private let symLog = SymLogV(0) let stack: CallStack + let cash: OIMcash let balance: Balance @Binding var buttonSelected: Bool @Binding var amountLastUsed: Amount @@ -141,6 +142,7 @@ struct SendAmountView: View { // let insufficientLabel2 = String(localized: "but you only have \(availableStr) to send.") let inputDestination = P2PSubjectV(stack: stack.push(), + cash: cash, scope: balance.scopeInfo, feeLabel: (feeLabel(feeString.0), feeLabel(feeString.1)), feeIsNotZero: feeIsNotZero(), @@ -149,6 +151,7 @@ struct SendAmountView: View { summary: $summary, expireDays: $expireDays) let shortcutDestination = P2PSubjectV(stack: stack.push(), + cash: cash, scope: balance.scopeInfo, feeLabel: nil, feeIsNotZero: feeIsNotZero(), diff --git a/TalerWallet1/Views/OIM/OIMView.swift b/TalerWallet1/Views/OIM/OIMView.swift @@ -128,6 +128,7 @@ struct OIMView: View { VStack { Spacer() OIMcurrencyScroller(stack: stack.push(), + cash: cash, availableVal: $availableVal, tappedVal: $tappedVal, canEdit: false) @@ -140,6 +141,7 @@ struct OIMView: View { VStack { Spacer() OIMlineView(stack: stack.push(), + cash: cash, amountVal: $availableVal, tappedVal: $tappedVal, canEdit: false) @@ -152,7 +154,6 @@ struct OIMView: View { #endif } } - .environmentObject(cash) .task { availableVal = intValue(available) cash.update(availableVal) @@ -163,6 +164,7 @@ struct OIMView: View { @available(iOS 16.4, *) struct OIMEditView: View { let stack: CallStack + let cash: OIMcash @Binding var amount: Amount @Binding var available: Amount let useAvailable : Bool // if false then we're requesting money and don't use available @@ -170,7 +172,6 @@ struct OIMEditView: View { @Binding var fwdButtonTapped: Bool @EnvironmentObject private var wrapper: NamespaceWrapper - @StateObject private var cash = OIMcash() @State private var amountVal: UInt64 = 0 @State private var availableVal: UInt64 = 0 @@ -193,7 +194,7 @@ struct OIMEditView: View { let currency = cash.currency OIMnavBack(stack: stack.push(), - currencyName: currency.noteBase, + currencyName: cash.currency.noteBase, amount: $amount, fwdButtonTapped: $fwdButtonTapped ) { @@ -201,6 +202,7 @@ struct OIMEditView: View { VStack { // even though this is the only item in the ZStack Spacer() OIMlineView(stack: stack.push(), + cash: cash, amountVal: $amountVal, tappedVal: $tappedVal, canEdit: true) @@ -213,6 +215,7 @@ struct OIMEditView: View { } Spacer() OIMcurrencyScroller(stack: stack.push(), + cash: cash, availableVal: $availableVal, tappedVal: $tappedVal, canEdit: true) @@ -233,7 +236,6 @@ struct OIMEditView: View { // } } // ZStack } - .environmentObject(cash) .task { amountVal = intValue(amount) availableVal = isAvailable @@ -244,11 +246,11 @@ struct OIMEditView: View { // MARK: - struct OIMSubjectView: View { let stack: CallStack + let cash: OIMcash @Binding var amount: Amount // let decimal: Int // 0 for ¥,HUF; 2 for $,€,£; 3 for ﷼,₯ (arabic) @Binding var fwdButtonTapped: Bool - @StateObject private var cash = OIMcash() var body: some View { // let _ = Self._printChanges() diff --git a/TalerWallet1/Views/OIM/OIMcurrencyScroller.swift b/TalerWallet1/Views/OIM/OIMcurrencyScroller.swift @@ -11,11 +11,11 @@ import taler_swift // renders all banknotes and coins in 1 horizontal scrollview struct OIMcurrencyScroller: View { let stack: CallStack + let cash: OIMcash @Binding var availableVal: UInt64 @Binding var tappedVal: UInt64 let canEdit: Bool - @EnvironmentObject private var cash: OIMcash @EnvironmentObject private var wrapper: NamespaceWrapper var body: some View { diff --git a/TalerWallet1/Views/OIM/OIMlayout.swift b/TalerWallet1/Views/OIM/OIMlayout.swift @@ -59,11 +59,11 @@ struct OIMlayoutView: View { private let symLog = SymLogV(0) // let logger = Logger(subsystem: "net.taler.gnu", category: "OIMlayoutView") let stack: CallStack + let cash: OIMcash let funds: OIMfunds @Binding var amountVal: UInt64 let canEdit: Bool - @EnvironmentObject private var cash: OIMcash @EnvironmentObject private var wrapper: NamespaceWrapper @State private var checkStacks: UInt64 = 0 diff --git a/TalerWallet1/Views/OIM/OIMlineView.swift b/TalerWallet1/Views/OIM/OIMlineView.swift @@ -16,11 +16,11 @@ fileprivate let vertSpacing: CGFloat = 10 struct OIMlineView: View { private let symLog = SymLogV(0) let stack: CallStack + let cash: OIMcash @Binding var amountVal: UInt64 @Binding var tappedVal: UInt64 let canEdit: Bool - @EnvironmentObject private var cash: OIMcash @EnvironmentObject private var wrapper: NamespaceWrapper @AppStorage("oimTwoRows") var oimTwoRows: Bool = false @@ -38,10 +38,12 @@ struct OIMlineView: View { #endif let notes = OIMlayoutView(stack: stack.push(), + cash: cash, funds: cash.notes(), amountVal: $amountVal, canEdit: canEdit) let coins = OIMlayoutView(stack: stack.push(), + cash: cash, funds: cash.coins(), amountVal: $amountVal, canEdit: canEdit) diff --git a/TalerWallet1/Views/OIM/OIMpayView.swift b/TalerWallet1/Views/OIM/OIMpayView.swift @@ -40,6 +40,7 @@ struct OIMpayView: View { VStack { Spacer() OIMlineView(stack: stack.push(), + cash: cash, amountVal: $amountVal, tappedVal: $tappedVal, canEdit: true) @@ -50,7 +51,6 @@ struct OIMpayView: View { .border(.red) #endif } - .environmentObject(cash) .task { amountVal = intValue(amount) }