taler-ios

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

commit a292ae9564ce0522145010f11e62071a662d7e94
parent 3127c2cbc2c521e6ea6d304218b69eafe6e1c090
Author: Marc Stibane <marc@taler.net>
Date:   Mon, 21 Jul 2025 19:00:58 +0200

selectedChestIndex

Diffstat:
MTalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift | 6++----
MTalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift | 12+++++-------
MTalerWallet1/Views/Balances/BalancesListView.swift | 5+++--
MTalerWallet1/Views/Balances/BalancesPendingRowV.swift | 2++
MTalerWallet1/Views/Balances/BalancesSectionView.swift | 2++
MTalerWallet1/Views/Main/MainView.swift | 16++++++++--------
MTalerWallet1/Views/OIM/OIMbalances.swift | 35+++++++++++++++++------------------
7 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/TalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift b/TalerWallet1/Views/Actions/Peer2peer/RequestPayment.swift @@ -30,7 +30,7 @@ struct RequestPayment: View { init(stack: CallStack, selectedBalance: Balance?, - selectedIndex: Int?, + selectedChestIndex: Int?, // OIM TODO: use balance amountLastUsed: Binding<Amount>, summary: Binding<String>, iconID: Binding<String?> @@ -43,10 +43,8 @@ struct RequestPayment: View { self._amountLastUsed = amountLastUsed self._summary = summary self._iconID = iconID -//#if OIM - let oimCash = OIMcash(selectedIndex) + let oimCash = OIMcash(selectedChestIndex) self._cash = StateObject(wrappedValue: { oimCash }()) -//#endif } @MainActor diff --git a/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift b/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift @@ -32,7 +32,7 @@ struct SendAmountV: View { init(stack: CallStack, selectedBalance: Balance?, - selectedIndex: Int?, + selectedChestIndex: Int?, // OIM TODO: use balance amountLastUsed: Binding<Amount>, summary: Binding<String>, iconID: Binding<String?> @@ -45,10 +45,8 @@ struct SendAmountV: View { self._amountLastUsed = amountLastUsed self._summary = summary self._iconID = iconID -//#if OIM - let oimCash = OIMcash(selectedIndex) + let oimCash = OIMcash(selectedChestIndex) self._cash = StateObject(wrappedValue: { oimCash }()) -//#endif } @MainActor @@ -115,7 +113,7 @@ struct SendAmountV: View { SendAmountView(stack: stack.push(), cash: cash, balance: balance, - buttonSelected: $buttonSelected, + buttonSelected: $buttonSelected, // call P2PSubjectV amountLastUsed: $amountLastUsed, amountToTransfer: $amountToTransfer, amountAvailable: $amountAvailable, @@ -147,7 +145,7 @@ struct SendAmountV: View { amountToTransfer: $amountToTransfer, available: available, useAvailable: true, // cannot send more than we have - fwdButtonTapped: $buttonSelected) + fwdButtonTapped: $buttonSelected) // call P2PSubjectV .environmentObject(NamespaceWrapper(namespace)) // keep OIMviews apart } } } @@ -188,7 +186,7 @@ fileprivate struct Preview_Content: View { flags: []) SendAmountV(stack: CallStack("Preview"), selectedBalance: noBalance, - selectedIndex: nil, + selectedChestIndex: nil, // preview amountLastUsed: $amountToPreview, summary: $summary, iconID: $iconID) diff --git a/TalerWallet1/Views/Balances/BalancesListView.swift b/TalerWallet1/Views/Balances/BalancesListView.swift @@ -15,7 +15,7 @@ struct BalancesListView: View { private let symLog = SymLogV(0) let stack: CallStack @Binding var selectedBalance: Balance? // pass down to TransactionsListView - @Binding var selectedIndex: Int? + @Binding var selectedChestIndex: Int? // OIM TODO: use balance @Binding var reloadTransactions: Int @Binding var qrButtonTapped: Bool @@ -56,6 +56,7 @@ struct BalancesListView: View { BalancesSectionView(stack: stack.push("\(balance.scopeInfo.currency)"), balance: balance, // this is the currency to be used selectedBalance: $selectedBalance, // set in TransactionsListView + selectedChestIndex: selectedChestIndex, sectionCount: count, amountToTransfer: $amountToTransfer, // does still have the wrong currency summary: $summary, @@ -75,7 +76,7 @@ struct BalancesListView: View { if controller.oimModeActive { OIMbalances(stack: stack.push(), selectedBalance: $selectedBalance, // set to user choice - selectedIndex: $selectedIndex, + selectedChestIndex: $selectedChestIndex, // OIM TODO: use balance qrButtonTapped: $qrButtonTapped) .environmentObject(NamespaceWrapper(namespace)) // keep OIMviews apart } diff --git a/TalerWallet1/Views/Balances/BalancesPendingRowV.swift b/TalerWallet1/Views/Balances/BalancesPendingRowV.swift @@ -14,6 +14,7 @@ struct BalancesPendingRowV: View { let stack: CallStack let balance: Balance @Binding var selectedBalance: Balance? // <- return here the balance when we go to Transactions + let selectedChestIndex: Int? @Binding var pendingTransactions: [TalerTransaction] let reloadPending: (_ stack: CallStack) async -> () @@ -93,6 +94,7 @@ fileprivate struct BalancesPendingRowV_Previews: PreviewProvider { stack: CallStack("Preview"), balance: balance, selectedBalance: $selectedPreviewBalance, + selectedChestIndex: nil, // preview pendingTransactions: $previewTransactions, reloadPending: {stack in }) } diff --git a/TalerWallet1/Views/Balances/BalancesSectionView.swift b/TalerWallet1/Views/Balances/BalancesSectionView.swift @@ -20,6 +20,7 @@ struct BalancesSectionView { let stack: CallStack let balance: Balance // this is the currency to be used @Binding var selectedBalance: Balance? // <- return here the balance when we go to Transactions + let selectedChestIndex: Int? let sectionCount: Int @Binding var amountToTransfer: Amount // does still have the wrong currency @Binding var summary: String @@ -118,6 +119,7 @@ extension BalancesSectionView: View { stack: stack.push(), balance: balance, selectedBalance: $selectedBalance, + selectedChestIndex: selectedChestIndex, pendingTransactions: $pendingTransactions, reloadPending: loadPending) .padding(.leading, ICONLEADING) diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift @@ -33,8 +33,8 @@ struct MainView: View { @AppStorage("useAuthentication") var useAuthentication: Bool = false @StateObject private var tabBarModel = TabBarModel() - @State private var selectedBalance: Balance? = nil // gets set in TransactionsListView - @State private var selectedIndex: Int? = nil // user selects savings box in OIMview + @State private var selectedBalance: Balance? = nil // for sheets, gets set in TransactionsListView + @State private var selectedChestIndex: Int? = nil // select in OIMbalances TODO: use balance @State private var urlToOpen: URL? = nil @State private var showUrlSheet = false @State private var showActionSheet = false @@ -73,7 +73,7 @@ struct MainView: View { let mainContent = ZStack { MainContent(logger: logger, stack: stack.push("Content"), selectedBalance: $selectedBalance, - selectedIndex: $selectedIndex, // user selects savings box in OIMview + selectedChestIndex: $selectedChestIndex, // OIM TODO: use balance talerFontIndex: $talerFontIndex, showActionSheet: $showActionSheet, showScanner: $showScanner, @@ -327,7 +327,7 @@ extension MainView { let logger: Logger let stack: CallStack @Binding var selectedBalance: Balance? - @Binding var selectedIndex: Int? // user selects savings box in OIMview + @Binding var selectedChestIndex: Int? // OIM TODO: use balance @Binding var talerFontIndex: Int @Binding var showActionSheet: Bool @Binding var showScanner: Bool @@ -411,13 +411,13 @@ extension MainView { /// Destinations for the 4 actions let sendDest = SendAmountV(stack: stack.push(Self.name), selectedBalance: selectedBalance, // if nil shows currency picker - selectedIndex: selectedIndex, // selected savings box from OIMview + selectedChestIndex: selectedChestIndex, // OIM TODO: use balance amountLastUsed: $amountLastUsed, // currency needs to be updated! summary: $summary, iconID: $iconID) let requestDest = RequestPayment(stack: stack.push(Self.name), selectedBalance: selectedBalance, - selectedIndex: selectedIndex, // selected savings box from OIMview + selectedChestIndex: selectedChestIndex, // OIM TODO: use balance amountLastUsed: $amountLastUsed, // currency needs to be updated! summary: $summary, iconID: $iconID) @@ -457,8 +457,8 @@ extension MainView { /// NavigationViews for Balances & Settings let balancesStack = NavigationView { BalancesListView(stack: stack.push(balancesTitle), - selectedBalance: $selectedBalance, // <= gets set in TransactionsListView - selectedIndex: $selectedIndex, // user selects savings box in OIMview + selectedBalance: $selectedBalance, // for sheets, pass down to TransactionsListView + selectedChestIndex: $selectedChestIndex, // OIM TODO: use balance // shouldReloadPending: $shouldReloadPending, reloadTransactions: $shouldReloadTransactions, qrButtonTapped: $qrButtonTapped) diff --git a/TalerWallet1/Views/OIM/OIMbalances.swift b/TalerWallet1/Views/OIM/OIMbalances.swift @@ -8,8 +8,7 @@ import SwiftUI import taler_swift - -enum OIMViewState { +enum OIMbalancesState { case chestsClosed case chestClosing case chestOpenTapped @@ -30,8 +29,8 @@ enum OIMViewState { struct OIMbalances: View { let stack: CallStack // let decimal: Int // 0 for ¥,HUF; 2 for $,€,£; 3 for ﷼,₯ (arabic) - @Binding var selectedBalance: Balance? // return user's choice - @Binding var selectedIndex: Int? + @Binding var selectedBalance: Balance? // return user's choice + @Binding var selectedChestIndex: Int? // OIM TODO: use balance @Binding var qrButtonTapped: Bool @EnvironmentObject private var controller: Controller @@ -42,7 +41,7 @@ struct OIMbalances: View { @State private var tappedVal: UInt64 = 0 @State private var available: Amount? = nil @State private var chestOpen: Int? = nil - @State private var viewState: OIMViewState = .chestsClosed + @State private var viewState: OIMbalancesState = .chestsClosed // @State private var showingActions = false // set true after user opened a chest, set false when choosing an action // @State private var sending = false // after user tapped on Send or on the money @State private var closing = false // after user tapped on the open chest @@ -86,7 +85,7 @@ struct OIMbalances: View { withAnimation(.basic1) { chestOpen = nil selectedBalance = nil - selectedIndex = nil + selectedChestIndex = nil available = nil // showingActions = false viewState = .chestsClosed @@ -112,10 +111,10 @@ struct OIMbalances: View { viewState = .chestOpenTapped withAnimation(.basic1) { chestOpen = index + selectedBalance = balance + selectedChestIndex = index viewState = .chestIsOpen - selectedIndex = index cash.setIndex(index) - selectedBalance = balance available = balance.available availableVal = balance.available.centValue cash.update2(availableVal, state: .chestOpening, duration, initial) // set cash to available @@ -156,7 +155,7 @@ struct OIMbalances: View { !available.isZero } else { false } let topButtons = HStack(alignment: .top) { - if chestOpen == nil { + if selectedChestIndex == nil { let showQR = viewState == .chestsClosed QRButton(hideTitle: true) { qrButtonTapped = true @@ -197,7 +196,7 @@ struct OIMbalances: View { history: viewState == .historyShown, secondAmount: nil) Spacer() - let isOpen = chestOpen != nil + let isOpen = selectedChestIndex != nil ZStack { sidePosition // let scaleMoney = viewState == .chestIsOpen @@ -225,17 +224,17 @@ struct OIMbalances: View { // two savings chests (Euro and Sierra Leone) Spacer() HStack(spacing: 30) { + let balance = controller.balances[0] // ForEach(controller.balances, id: \.self) { balance in // OIMbalanceButton(isOpen: selectedBalance == balance) { - let chests = ["EUR", "SLE", "CdI"] - let balance = controller.balances[0] - ForEach(0...2, id: \.self) { index in - let itsMe = chestOpen == index - let isClosed = chestOpen == nil + ForEach(0..<OIMcurrencies.count, id: \.self) { index in + let oimCurrency = OIMcurrencies[index] + let itsMe = selectedChestIndex == index + let isClosed = selectedChestIndex == nil let size = isClosed ? 160.0 : OIMbuttonSize ZStack { - OIMbalanceButton(isOpen: itsMe, chest: chests[index], isFinal: false) { + OIMbalanceButton(isOpen: itsMe, chest: oimCurrency.chest, isFinal: false) { if itsMe { closeChest() } else { @@ -276,7 +275,7 @@ struct OIMbalances: View { } .onAppear { // showingActions = false - if (chestOpen != nil) { + if (selectedChestIndex != nil) { let balance = controller.balances[0] available = balance.available availableVal = available?.centValue ?? 0 @@ -291,7 +290,7 @@ struct OIMbalances: View { .onDisappear { cash.moveBack() // sending = false - viewState = (chestOpen != nil) ? .chestIsOpen : .chestsClosed + viewState = (selectedChestIndex != nil) ? .chestIsOpen : .chestsClosed } } }