taler-ios

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

commit 53ee8de70a0c3e0f449c9f8fe10f64cb50fa5f10
parent 23dd90aad20d3f0c3093e5c4db48842e4262fe40
Author: Marc Stibane <marc@taler.net>
Date:   Sun, 12 Nov 2023 17:55:38 +0100

amountToTransfer Balances

Diffstat:
MTalerWallet1/Views/Balances/BalanceRowView.swift | 7++-----
MTalerWallet1/Views/Balances/BalancesListView.swift | 10+++++-----
MTalerWallet1/Views/Balances/BalancesSectionView.swift | 65++++++++++++++++++++++++++++++++---------------------------------
3 files changed, 39 insertions(+), 43 deletions(-)

diff --git a/TalerWallet1/Views/Balances/BalanceRowView.swift b/TalerWallet1/Views/Balances/BalanceRowView.swift @@ -48,7 +48,6 @@ struct BalanceButton: View { /// [Send Money] [Request Payment] struct BalanceRowView: View { let amount: Amount - let currencyInfo: CurrencyInfo? let sendAction: () -> Void let recvAction: () -> Void let rowAction: () -> Void @@ -104,8 +103,6 @@ struct BalanceRowView: View { struct BalanceRowView_Previews: PreviewProvider { struct StateContainer: View { var body: some View { - let testInfo = PreviewCurrencyInfo(TESTCURRENCY, digits: 0) - let demoInfo = PreviewCurrencyInfo(TESTCURRENCY, digits: 2) let test = Amount(currency: TESTCURRENCY, cent: 123) let demo = Amount(currency: DEMOCURRENCY, cent: 123456) // let testStr = test.string(testInfo) @@ -113,9 +110,9 @@ struct BalanceRowView_Previews: PreviewProvider { List { Section { - BalanceRowView(amount: demo, currencyInfo: demoInfo, sendAction: {}, recvAction: {}, rowAction: {}) + BalanceRowView(amount: demo, sendAction: {}, recvAction: {}, rowAction: {}) } - BalanceRowView(amount: test, currencyInfo: testInfo, sendAction: {}, recvAction: {}, rowAction: {}) + BalanceRowView(amount: test, sendAction: {}, recvAction: {}, rowAction: {}) } } } diff --git a/TalerWallet1/Views/Balances/BalancesListView.swift b/TalerWallet1/Views/Balances/BalancesListView.swift @@ -21,7 +21,7 @@ struct BalancesListView: View { #endif @EnvironmentObject private var model: WalletModel - @State private var centsToTransfer: UInt64 = 0 + @State private var amountToTransfer = Amount.zero(currency: "") // Update when used @State private var summary: String = "" @State private var showQRScanner: Bool = false @State private var showCameraAlert: Bool = false @@ -102,7 +102,7 @@ struct BalancesListView: View { let hamburger: HamburgerButton = HamburgerButton(action: hamburgerAction) #endif Content(symLog: symLog, stack: stack.push(), balances: $balances, - centsToTransfer: $centsToTransfer, summary: $summary, + amountToTransfer: $amountToTransfer, summary: $summary, reloadBalances: reloadBalances) .navigationTitle(navTitle) .navigationBarItems(leading: hamburger, @@ -131,7 +131,7 @@ extension BalancesListView { let stack: CallStack @AppStorage("myListStyle") var myListStyle: MyListStyle = .automatic @Binding var balances: [Balance] - @Binding var centsToTransfer: UInt64 + @Binding var amountToTransfer: Amount @Binding var summary: String var reloadBalances: (_ stack: CallStack, _ invalidateCache: Bool) async -> Int @@ -147,9 +147,9 @@ extension BalancesListView { } else { List(balances, id: \.self) { balance in BalancesSectionView(stack: stack.push("\(balance.scopeInfo.currency)"), - balance: balance, + balance: balance, // this is the currency to be used sectionCount: count, - centsToTransfer: $centsToTransfer, + amountToTransfer: $amountToTransfer, // does still have the wrong currency summary: $summary) } .onAppear() { diff --git a/TalerWallet1/Views/Balances/BalancesSectionView.swift b/TalerWallet1/Views/Balances/BalancesSectionView.swift @@ -17,9 +17,9 @@ import SymLog struct BalancesSectionView { private let symLog = SymLogV(0) let stack: CallStack - let balance: Balance + let balance: Balance // this is the currency to be used let sectionCount: Int - @Binding var centsToTransfer: UInt64 + @Binding var amountToTransfer: Amount // does still have the wrong currency @Binding var summary: String // @AppStorage("moreContrast") var moreContrast: Bool = false @@ -81,17 +81,15 @@ extension BalancesSectionView: View { } BalancesNavigationLinksView(stack: stack.push(), balance: balance, - currencyInfo: currencyInfo, - centsToTransfer: $centsToTransfer, + amountToTransfer: $amountToTransfer, // does still have the wrong currency summary: $summary, -// buttonSelected: $buttonSelected, completedTransactions: $completedTransactions, reloadAllAction: reloadCompleted, reloadOneAction: reloadOneAction) if pendingTransactions.count > 0 { BalancesPendingRowView(symLog: symLog, stack: stack.push(), - currencyInfo: currencyInfo, + currency: currency, pendingTransactions: $pendingTransactions, reloadPending: reloadPending, reloadOneAction: reloadOneAction) @@ -102,7 +100,7 @@ extension BalancesSectionView: View { LazyView { TransactionsListView(stack: stack.push(), navTitle: String(localized: "Incomplete", comment: "ViewTitle of TransactionList"), - currencyInfo: currencyInfo, + currency: currency, transactions: incompleteTransactions, showUpDown: false, reloadAllAction: reloadIncomplete, @@ -137,8 +135,7 @@ extension BalancesSectionView: View { let threeTransactions = Array(slice) TransactionsArraySliceV(symLog: symLog, stack: stack.push(), - currencyInfo: currencyInfo, -// currency: currency, + currency: currency, transactions: threeTransactions, reloadOneAction: reloadOneAction) } header: { @@ -155,8 +152,7 @@ extension BalancesSectionView: View { fileprivate struct BalancesPendingRowView: View { let symLog: SymLogV? let stack: CallStack - let currencyInfo: CurrencyInfo? -// + let currency: String // = currencyInfo.scope.currency @Binding var pendingTransactions: [Transaction] let reloadPending: (_ stack: CallStack) async -> () let reloadOneAction: ((_ transactionId: String) async throws -> Transaction) @@ -183,7 +179,6 @@ fileprivate struct BalancesPendingRowView: View { } var body: some View { - let currency: String = currencyInfo?.scope.currency ?? "" let (pendingIncoming, pendingOutgoing) = computePending(currency: currency) NavigationLink { @@ -191,7 +186,7 @@ fileprivate struct BalancesPendingRowView: View { LazyView { TransactionsListView(stack: stack.push(), navTitle: String(localized: "Pending", comment: "ViewTitle of TransactionList"), - currencyInfo: currencyInfo, + currency: currency, transactions: pendingTransactions, showUpDown: false, reloadAllAction: reloadPending, @@ -201,11 +196,11 @@ fileprivate struct BalancesPendingRowView: View { VStack(spacing: 6) { var rows = 0 if !pendingIncoming.isZero { - PendingRowView(amount: pendingIncoming, currencyInfo: currencyInfo, incoming: true) + PendingRowView(amount: pendingIncoming, incoming: true) let _ = (rows+=1) } if !pendingOutgoing.isZero { - PendingRowView(amount: pendingOutgoing, currencyInfo: currencyInfo, incoming: false) + PendingRowView(amount: pendingOutgoing, incoming: false) let _ = (rows+=1) } if rows == 0 { @@ -221,9 +216,8 @@ fileprivate struct BalancesPendingRowView: View { fileprivate struct BalancesNavigationLinksView: View { let stack: CallStack let balance: Balance - let currencyInfo: CurrencyInfo? // let sectionCount: Int - @Binding var centsToTransfer: UInt64 + @Binding var amountToTransfer: Amount // does still have the wrong currency @Binding var summary: String @Binding var completedTransactions: [Transaction] let reloadAllAction: (_ stack: CallStack) async -> () @@ -244,21 +238,26 @@ fileprivate struct BalancesNavigationLinksView: View { // } } - var body: some View { + func setCurrency() -> String { let currency = balance.scopeInfo.currency + amountToTransfer.setCurrency(currency) + return currency + } + + var body: some View { + let currency = setCurrency() // update currency in amountToTransfer HStack(spacing: 0) { NavigationLink(destination: LazyView { SendAmount(stack: stack.push(), amountAvailable: balance.available, - centsToTransfer: $centsToTransfer, + amountToTransfer: $amountToTransfer, // with correct currency summary: $summary) }, tag: 1, selection: $buttonSelected ) { EmptyView() }.frame(width: 0).opacity(0).hidden() // SendAmount NavigationLink(destination: LazyView { RequestPayment(stack: stack.push(), - scopeInfo: balance.scopeInfo, - centsToTransfer: $centsToTransfer, + amountToTransfer: $amountToTransfer, // with correct currency summary: $summary) }, tag: 2, selection: $buttonSelected ) { EmptyView() }.frame(width: 0).opacity(0).hidden() // RequestPayment @@ -266,7 +265,7 @@ fileprivate struct BalancesNavigationLinksView: View { NavigationLink(destination: LazyView { TransactionsListView(stack: stack.push(), navTitle: String(localized: "Transactions", comment: "ViewTitle of TransactionList"), - currencyInfo: currencyInfo, + currency: currency, transactions: completedTransactions, showUpDown: true, reloadAllAction: reloadAllAction, @@ -274,21 +273,22 @@ fileprivate struct BalancesNavigationLinksView: View { }, tag: 3, selection: $buttonSelected ) { EmptyView() }.frame(width: 0).opacity(0).hidden() // TransactionsListView - BalanceRowView(amount: balance.available, currencyInfo: currencyInfo, - sendAction: { - selectAndUpdate(1) // will trigger SendAmount NavigationLink - }, recvAction: { - selectAndUpdate(2) // will trigger RequestPayment NavigationLink - }, rowAction: { - buttonSelected = 3 // will trigger TransactionList NavigationLink - }) + BalanceRowView(amount: balance.available, + sendAction: { + selectAndUpdate(1) // trigger SendAmount NavigationLink + }, recvAction: { + selectAndUpdate(2) // trigger RequestPayment NavigationLink + }, rowAction: { + buttonSelected = 3 // trigger TransactionList NavigationLink + }) } } } // MARK: - #if false // model crashes +struct BalancesSectionView_Previews: PreviewProvider { fileprivate struct BindingViewContainer: View { - @State var centsToTransfer: UInt64 = 333 + @State var amountToTransfer: UInt64 = 333 @State private var summary: String = "bla-bla" var body: some View { @@ -299,12 +299,11 @@ fileprivate struct BindingViewContainer: View { hasPendingTransactions: true) BalancesSectionView(balance: balance, sectionCount: 2, - centsToTransfer: $centsToTransfer, + amountToTransfer: $amountToTransfer, summary: $summary) } } -struct BalancesSectionView_Previews: PreviewProvider { static var previews: some View { List { BindingViewContainer()