taler-ios

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

commit e18bc100d5a2d903093585176b0fd5e2136df038
parent 1afc225066b511d4ba2358493697edbcd4821b5d
Author: Marc Stibane <marc@taler.net>
Date:   Sun, 12 Nov 2023 18:16:39 +0100

amountToTransfer Send

Diffstat:
MTalerWallet1/Views/HelperViews/CurrencyField.swift | 1+
MTalerWallet1/Views/Peer2peer/SendAmount.swift | 22++++++++++------------
MTalerWallet1/Views/Peer2peer/SendPurpose.swift | 18+++++-------------
3 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/TalerWallet1/Views/HelperViews/CurrencyField.swift b/TalerWallet1/Views/HelperViews/CurrencyField.swift @@ -21,6 +21,7 @@ */ import SwiftUI import UIKit +import taler_swift @MainActor public struct CurrencyField: View { diff --git a/TalerWallet1/Views/Peer2peer/SendAmount.swift b/TalerWallet1/Views/Peer2peer/SendAmount.swift @@ -12,7 +12,7 @@ struct SendAmount: View { let stack: CallStack let amountAvailable: Amount // TODO: GetMaxPeerPushAmount - @Binding var centsToTransfer: UInt64 + @Binding var amountToTransfer: Amount @Binding var summary: String @EnvironmentObject private var model: WalletModel @@ -38,12 +38,11 @@ struct SendAmount: View { #endif let currency = amountAvailable.currencyStr let navTitle = String(localized: "Send \(currency)", comment: "Send currency, Dialog Title") - let currencyField = CurrencyField(value: $centsToTransfer, currency: currency) - + let currencyField = CurrencyField(amount: $amountToTransfer) let fee = fee(ppCheck: peerPushCheck) ScrollView { VStack(alignment: .trailing) { - let available = amountAvailable.readableDescription + let available = amountAvailable.readableDescription // TODO: formatter Text("Available: \(available)") .accessibilityFont(.title3) .padding(.bottom, 2) @@ -54,12 +53,12 @@ struct SendAmount: View { .foregroundColor(.red) .padding(4) - let disabled = centsToTransfer == 0 // TODO: check amountAvailable + let disabled = amountToTransfer.isZero // TODO: check amountAvailable NavigationLink(destination: LazyView { SendPurpose(stack: stack.push(), amountAvailable: amountAvailable, - centsToTransfer: centsToTransfer, + amountToTransfer: amountToTransfer, fee: fee, summary: $summary, expireDays: $expireDays) @@ -81,11 +80,10 @@ struct SendAmount: View { .onDisappear { symLog.log("❗️Yikes SendAmount onDisappear") } - .task(id: centsToTransfer) { - if centsToTransfer > 0 { - let amount = Amount.amountFromCents(currency, centsToTransfer) + .task(id: amountToTransfer.value) { + if !amountToTransfer.isZero { do { - let ppCheck = try await model.checkPeerPushDebitM(amount) + let ppCheck = try await model.checkPeerPushDebitM(amountToTransfer) peerPushCheck = ppCheck // TODO: set from exchange // agePicker.setAges(ages: peerPushCheck?.ageRestrictionOptions) @@ -100,14 +98,14 @@ struct SendAmount: View { // MARK: - #if DEBUG struct SendAmount_Container : View { - @State private var centsToTransfer: UInt64 = 510 + @State private var amountToTransfer = Amount(currency: DEMOCURRENCY, cent: 510) @State private var summary: String = "" var body: some View { let amount = Amount(currency: LONGCURRENCY, integer: 10, fraction: 0) SendAmount(stack: CallStack("Preview"), amountAvailable: amount, - centsToTransfer: $centsToTransfer, + amountToTransfer: $amountToTransfer, summary: $summary) } } diff --git a/TalerWallet1/Views/Peer2peer/SendPurpose.swift b/TalerWallet1/Views/Peer2peer/SendPurpose.swift @@ -11,7 +11,7 @@ struct SendPurpose: View { let stack: CallStack let amountAvailable: Amount - let centsToTransfer: UInt64 + let amountToTransfer: Amount let fee: String @Binding var summary: String @Binding var expireDays: UInt @@ -19,19 +19,11 @@ struct SendPurpose: View { let navTitle = String(localized: "NavTitle_Send_Subject", defaultValue: "Subject", comment: "NavTitle for entering the subject for Send-Money") @State private var transactionStarted: Bool = false - - private var value: String { -// let mag = pow(10, formatter.maximumFractionDigits) -// return formatter.string(for: Decimal(centsToTransfer) / mag) ?? "" - return String(centsToTransfer / 100) // TODO: based on currency - } @FocusState private var isFocused: Bool var body: some View { - let amount = Amount.amountFromCents(amountAvailable.currencyStr, centsToTransfer) - VStack (spacing: 6) { - Text(amount.readableDescription) + Text(amountToTransfer.readableDescription) // TODO: curreny formatter Text("+ \(fee) payment fee") .accessibilityFont(.body) .foregroundColor(.red) @@ -84,13 +76,13 @@ struct SendPurpose: View { let disabled = (expireDays == 0) || (summary.count < 1) // TODO: check amountAvailable NavigationLink(destination: LazyView { SendDoneV(stack: stack.push(), - amountToSend: amount, + amountToSend: amountToTransfer, amountToReceive: nil, summary: summary, expireDays: expireDays, transactionStarted: $transactionStarted) }) { - Text("Send \(value) \(amountAvailable.currencyStr) now", comment: "first is value, second currencyString") // TODO: currency formatter + Text("Send \(amountToTransfer.readableDescription) now", comment: "amountToTransfer") // TODO: currency formatter } .buttonStyle(TalerButtonStyle(type: .prominent)) .disabled(disabled) @@ -130,7 +122,7 @@ struct SendPurpose: View { // @State var expireDays: UInt = 0 // let amount = Amount(currency: LONGCURRENCY, integer: 10, fraction: 0) // SendPurpose(amountAvailable: amount, -// centsToTransfer: 543, +// amountToTransfer: 543, // fee: "0,43", // summary: $summary, // expireDays: $expireDays)