taler-ios

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

commit 39c1bf285e0abf7ed49ec49c3e71d9ee2ec629ef
parent 936fb3fa78d414be0e564b3326f125c316504f82
Author: Marc Stibane <marc@taler.net>
Date:   Thu, 24 Apr 2025 05:12:27 +0200

selectedBalance no @Binding

Diffstat:
MTalerWallet1/Views/Actions/Banking/DepositAmountV.swift | 2+-
MTalerWallet1/Views/Actions/Banking/DepositSelectV.swift | 4++--
MTalerWallet1/Views/Actions/Banking/ManualWithdraw.swift | 2+-
MTalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift | 2+-
MTalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift | 4++--
MTalerWallet1/Views/Balances/BalancesListView.swift | 9++++++---
MTalerWallet1/Views/Balances/BalancesPendingRowV.swift | 2+-
MTalerWallet1/Views/Main/MainView.swift | 16++++++++--------
MTalerWallet1/Views/Settings/Bank/BankListView.swift | 3+--
MTalerWallet1/Views/Settings/Bank/BankSectionView.swift | 4++--
MTalerWallet1/Views/Sheets/QRSheet.swift | 4++--
MTalerWallet1/Views/Sheets/URLSheet.swift | 4++--
MTalerWallet1/Views/Sheets/WithdrawExchangeV.swift | 4++--
13 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/TalerWallet1/Views/Actions/Banking/DepositAmountV.swift b/TalerWallet1/Views/Actions/Banking/DepositAmountV.swift @@ -13,7 +13,7 @@ import SymLog struct DepositAmountV: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? @Binding var amountLastUsed: Amount let paytoUri: String? let label: String? diff --git a/TalerWallet1/Views/Actions/Banking/DepositSelectV.swift b/TalerWallet1/Views/Actions/Banking/DepositSelectV.swift @@ -14,7 +14,7 @@ import SymLog struct DepositSelectV: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? @Binding var amountLastUsed: Amount // let amountAvailable: Amount? @@ -79,7 +79,7 @@ struct DepositSelectV: View { // let disabled = (accountHolder.count < 1) || paytoUri == nil // TODO: check amountAvailable BankSectionView(stack: stack.push(), account: account, - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, amountLastUsed: $amountLastUsed, goToEdit: false) } diff --git a/TalerWallet1/Views/Actions/Banking/ManualWithdraw.swift b/TalerWallet1/Views/Actions/Banking/ManualWithdraw.swift @@ -14,7 +14,7 @@ import SymLog struct ManualWithdraw: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? @Binding var amountLastUsed: Amount @Binding var amountToTransfer: Amount @Binding var exchange: Exchange? // only for withdraw-exchange diff --git a/TalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift b/TalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift @@ -13,7 +13,7 @@ import SymLog struct RequestPayment: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? @Binding var amountLastUsed: Amount @Binding var summary: String diff --git a/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift b/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift @@ -13,7 +13,7 @@ import SymLog struct SendAmountV: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? // coming from transaction list or OIM @Binding var amountLastUsed: Amount @Binding var summary: String @@ -152,7 +152,7 @@ fileprivate struct Preview_Content: View { pendingOutgoing: pending, flags: []) SendAmountV(stack: CallStack("Preview"), - selectedBalance: $noBalance, + selectedBalance: noBalance, amountLastUsed: $amountToPreview, summary: $summary) } diff --git a/TalerWallet1/Views/Balances/BalancesListView.swift b/TalerWallet1/Views/Balances/BalancesListView.swift @@ -14,7 +14,7 @@ import AVFoundation struct BalancesListView: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + @Binding var selectedBalance: Balance? // pass down to TransactionsListView @Binding var reloadTransactions: Int @Binding var qrButtonTapped: Bool @@ -47,11 +47,14 @@ struct BalancesListView: View { await refresh() } } else { + /// In standard mode, selectedBalance just sets a "preference" which balance to pre-select for Actions. + /// However, the user can select another balance (with the picker) in each action + /// In OIM mode, the user selects a balance 'here' (in OIMView) when tapping on a savings box (representing the balance) Group { List(controller.balances, id: \.self) { balance in BalancesSectionView(stack: stack.push("\(balance.scopeInfo.currency)"), balance: balance, // this is the currency to be used - selectedBalance: $selectedBalance, + selectedBalance: $selectedBalance, // set in TransactionsListView sectionCount: count, amountToTransfer: $amountToTransfer, // does still have the wrong currency summary: $summary, @@ -59,7 +62,7 @@ struct BalancesListView: View { } .onAppear() { DebugViewC.shared.setViewID(VIEW_BALANCES, stack: stack.push("onAppear")) - selectedBalance = nil + selectedBalance = nil // reset } .listStyle(myListStyle.style).anyView .refreshable { diff --git a/TalerWallet1/Views/Balances/BalancesPendingRowV.swift b/TalerWallet1/Views/Balances/BalancesPendingRowV.swift @@ -63,7 +63,7 @@ struct BalancesPendingRowV: View { let destination = TransactionsListView(stack: stack.push(), scope: balance.scopeInfo, balance: balance, - selectedBalance: $selectedBalance, + selectedBalance: $selectedBalance, // set in there navTitle: String(localized: "Pending", comment: "ViewTitle of TransactionList"), transactions: $pendingTransactions, reloadAllAction: reloadPending) diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift @@ -31,7 +31,7 @@ struct MainView: View { @AppStorage("playSoundsB") var playSoundsB: Bool = false @StateObject var tabBarModel = TabBarModel() - @State private var selectedBalance: Balance? = nil + @State private var selectedBalance: Balance? = nil // gets set in TransactionsListView @State private var urlToOpen: URL? = nil @State private var showUrlSheet = false @State private var showActionSheet = false @@ -109,7 +109,7 @@ struct MainView: View { // .animation(.default, value: model.error2 == nil) .sheet(isPresented: $showUrlSheet, onDismiss: sheetDismissed) { let sheet = URLSheet(stack: stack.push(), - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, urlToOpen: $urlToOpen) .id("onOpenURL") Sheet(stack: stack.push(), sheetView: AnyView(sheet)) @@ -118,7 +118,7 @@ struct MainView: View { onDismiss: { showActionSheet = false; qrButtonTapped = false; userAction += 1 } ) { let qrSheet = AnyView(QRSheet(stack: stack.push(".sheet"), - selectedBalance: $selectedBalance)) + selectedBalance: selectedBalance)) // let _ = logger.trace("❗️showScanner: \(SCANDETENT)❗️") if #available(iOS 16.4, *) { let scanDetent: PresentationDetent = .fraction(SCANDETENT) @@ -320,18 +320,18 @@ extension MainView { private var tabContent: some View { /// Destinations for the 4 actions let sendDest = SendAmountV(stack: stack.push(Self.name), - selectedBalance: $selectedBalance, // if nil shows currency picker + selectedBalance: selectedBalance, // if nil shows currency picker amountLastUsed: $amountLastUsed, // currency needs to be updated! summary: $summary) let requestDest = RequestPayment(stack: stack.push(Self.name), - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, amountLastUsed: $amountLastUsed, // currency needs to be updated! summary: $summary) let depositDest = DepositSelectV(stack: stack.push(Self.name), - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, amountLastUsed: $amountLastUsed) let manualWithdrawDest = ManualWithdraw(stack: stack.push(Self.name), - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, amountLastUsed: $amountLastUsed, // currency needs to be updated! amountToTransfer: $amountToTransfer, exchange: $exchange, // only for withdraw-exchange @@ -362,7 +362,7 @@ extension MainView { /// NavigationViews for Balances & Settings let balancesStack = NavigationView { BalancesListView(stack: stack.push(balancesTitle), - selectedBalance: $selectedBalance, + selectedBalance: $selectedBalance, // <= gets set in TransactionsListView // shouldReloadPending: $shouldReloadPending, reloadTransactions: $shouldReloadTransactions, qrButtonTapped: $qrButtonTapped) diff --git a/TalerWallet1/Views/Settings/Bank/BankListView.swift b/TalerWallet1/Views/Settings/Bank/BankListView.swift @@ -20,7 +20,6 @@ struct BankListView: View { @AppStorage("minimalistic") var minimalistic: Bool = false @AppStorage("myListStyle") var myListStyle: MyListStyle = .automatic - @State private var selectedBalance: Balance? = nil @State private var amountLastUsed = Amount.zero(currency: EMPTYSTRING) // needed for Deposit, ignore @State private var showAddDialog: Bool = false @State private var bankAccounts: [BankAccountsInfo] = [] @@ -91,7 +90,7 @@ struct BankListView: View { ForEach(bankAccounts, id: \.self) { account in BankSectionView(stack: stack.push(), account: account, - selectedBalance: $selectedBalance, // needed for Deposit, ignore + selectedBalance: nil, // needed for Deposit, ignore amountLastUsed: $amountLastUsed, // needed for Deposit, ignore goToEdit: true) } diff --git a/TalerWallet1/Views/Settings/Bank/BankSectionView.swift b/TalerWallet1/Views/Settings/Bank/BankSectionView.swift @@ -15,7 +15,7 @@ struct BankSectionView: View { private let symLog = SymLogV(0) let stack: CallStack let account: BankAccountsInfo - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? @Binding var amountLastUsed: Amount let goToEdit: Bool @@ -82,7 +82,7 @@ struct BankSectionView: View { let navTitle = String(localized: "NavTitle_Deposit", // _Currency", defaultValue: "Deposit") // \(currencySymbol)" DepositAmountV(stack: stack.push(), - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, amountLastUsed: $amountLastUsed, paytoUri: account.paytoUri, label: account.label) diff --git a/TalerWallet1/Views/Sheets/QRSheet.swift b/TalerWallet1/Views/Sheets/QRSheet.swift @@ -13,7 +13,7 @@ import AVFoundation struct QRSheet: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? @EnvironmentObject private var model: WalletModel @State private var scannedCode: String? @@ -43,7 +43,7 @@ struct QRSheet: View { let scheme = scannedURL.scheme if scheme?.lowercased() == "taler" { URLSheet(stack: stack.push(), - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, urlToOpen: $urlToOpen) } else { // let _ = print(scannedURL) // TODO: error logging diff --git a/TalerWallet1/Views/Sheets/URLSheet.swift b/TalerWallet1/Views/Sheets/URLSheet.swift @@ -12,7 +12,7 @@ import SymLog struct URLSheet: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? @Binding var urlToOpen: URL? @EnvironmentObject private var controller: Controller @@ -46,7 +46,7 @@ struct URLSheet: View { WithdrawURIView(stack: stack.push(), url: passedURL) case .withdrawExchange: WithdrawExchangeV(stack: stack.push(), - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, url: passedURL) case .pay: PaymentView(stack: stack.push(), url: passedURL, diff --git a/TalerWallet1/Views/Sheets/WithdrawExchangeV.swift b/TalerWallet1/Views/Sheets/WithdrawExchangeV.swift @@ -14,7 +14,7 @@ import SymLog struct WithdrawExchangeV: View { private let symLog = SymLogV(0) let stack: CallStack - @Binding var selectedBalance: Balance? + let selectedBalance: Balance? var url: URL @EnvironmentObject private var controller: Controller @@ -61,7 +61,7 @@ struct WithdrawExchangeV: View { let scopeInfo = exchange.scopeInfo Group { ManualWithdraw(stack: stack.push(), - selectedBalance: $selectedBalance, + selectedBalance: selectedBalance, amountLastUsed: $amountLastUsed, amountToTransfer: $amountToTransfer, exchange: $exchange, // only for withdraw-exchange