taler-ios

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

commit 1afc225066b511d4ba2358493697edbcd4821b5d
parent 0d09d7df346fde190f097a215d9fcf8c8ab7d037
Author: Marc Stibane <marc@taler.net>
Date:   Sun, 12 Nov 2023 18:14:34 +0100

amountToTransfer Request

Diffstat:
MTalerWallet1/Views/HelperViews/CurrencyField.swift | 4+---
MTalerWallet1/Views/Peer2peer/RequestPayment.swift | 39+++++++++++++++++++--------------------
MTalerWallet1/Views/Peer2peer/RequestPurpose.swift | 31++++++++++++-------------------
3 files changed, 32 insertions(+), 42 deletions(-)

diff --git a/TalerWallet1/Views/HelperViews/CurrencyField.swift b/TalerWallet1/Views/HelperViews/CurrencyField.swift @@ -24,9 +24,7 @@ import UIKit @MainActor public struct CurrencyField: View { - @Binding var value: UInt64 - var currency: String - var formatter: NumberFormatter + @Binding var amount: Amount // the `value´ private var currencyInputField: CurrencyInputField! = nil public func becomeFirstResponder() -> Void { diff --git a/TalerWallet1/Views/Peer2peer/RequestPayment.swift b/TalerWallet1/Views/Peer2peer/RequestPayment.swift @@ -11,8 +11,7 @@ struct RequestPayment: View { private let symLog = SymLogV(0) let stack: CallStack - var scopeInfo: ScopeInfo - @Binding var centsToTransfer: UInt64 + @Binding var amountToTransfer: Amount @Binding var summary: String @EnvironmentObject private var model: WalletModel @@ -25,9 +24,9 @@ struct RequestPayment: View { let _ = Self._printChanges() let _ = symLog.vlog() // just to get the # to compare it with .onAppear & onDisappear #endif - let currency = scopeInfo.currency + let currency = amountToTransfer.currencyStr let navTitle = String(localized: "Request Money", comment: "Dialog Title") - let currencyField = CurrencyField(value: $centsToTransfer, currency: currency) + let currencyField = CurrencyField(amount: $amountToTransfer) ScrollView { VStack { CurrencyInputView(currencyField: currencyField, @@ -35,22 +34,21 @@ struct RequestPayment: View { let someCoins = SomeCoins(details: peerPullCheck) QuiteSomeCoins(someCoins: someCoins, shouldShowFee: true, - currency: currency, amountEffective: peerPullCheck?.amountEffective) + currency: currency, + amountEffective: peerPullCheck?.amountEffective) HStack { - let disabled = (centsToTransfer == 0) || someCoins.invalid || someCoins.tooMany + let disabled = amountToTransfer.isZero || someCoins.invalid || someCoins.tooMany NavigationLink(destination: LazyView { RequestPurpose(stack: stack.push(), - scopeInfo: scopeInfo, - centsToTransfer: centsToTransfer, + amountToTransfer: amountToTransfer, fee: someCoins.fee, summary: $summary, expireDays: $expireDays) // { deactivateAction() } }) { - let amount = Amount.amountFromCents(currency, centsToTransfer) - Text("Request \(amount.readableDescription)") + Text("Request \(amountToTransfer.readableDescription)") // TODO: formatter } .buttonStyle(TalerButtonStyle(type: .prominent)) .disabled(disabled) @@ -68,16 +66,17 @@ struct RequestPayment: View { .onDisappear { symLog.log("❗️Yikes \(navTitle) onDisappear") } - .task(id: centsToTransfer) { - let amount = Amount.amountFromCents(currency, centsToTransfer) - do { - let ppCheck = try await model.checkPeerPullCreditM(amount, exchangeBaseUrl: nil) - peerPullCheck = ppCheck - // TODO: set from exchange -// agePicker.setAges(ages: peerPushCheck?.ageRestrictionOptions) - } catch { // TODO: error - symLog.log(error.localizedDescription) - peerPullCheck = nil + .task(id: amountToTransfer.value) { + if !amountToTransfer.isZero { + do { + let ppCheck = try await model.checkPeerPullCreditM(amountToTransfer, exchangeBaseUrl: nil) + peerPullCheck = ppCheck + // TODO: set from exchange +// agePicker.setAges(ages: peerPushCheck?.ageRestrictionOptions) + } catch { // TODO: error + symLog.log(error.localizedDescription) + peerPullCheck = nil + } } } } diff --git a/TalerWallet1/Views/Peer2peer/RequestPurpose.swift b/TalerWallet1/Views/Peer2peer/RequestPurpose.swift @@ -10,28 +10,21 @@ struct RequestPurpose: View { private let symLog = SymLogV(0) let stack: CallStack - let scopeInfo: ScopeInfo - let centsToTransfer: UInt64 + let amountToTransfer: Amount let fee: String @Binding var summary: String @Binding var expireDays: UInt @AppStorage("iconOnly") var iconOnly: Bool = false let navTitle = String(localized: "NavTitle_Request_Subject", defaultValue: "Request", comment: "NavTitle for entering the subject for Request-Payment") + @EnvironmentObject private var controller: Controller @State private var transactionStarted: Bool = false @FocusState private var isFocused: Bool - private var label: String { -// let mag = pow(10, formatter.maximumFractionDigits) -// return formatter.string(for: Decimal(centsToTransfer) / mag) ?? "" - return String(centsToTransfer / 100) // TODO: based on currency - } - var body: some View { - let amount = Amount.amountFromCents(scopeInfo.currency, centsToTransfer) - + let currencyInfo = controller.info(for: amountToTransfer.currencyStr, controller.currencyTicker) VStack (spacing: 6) { - Text(amount.readableDescription) + Text(amountToTransfer.string(currencyInfo)) Text("+ \(fee) payment fee") .foregroundColor(.red) VStack(alignment: .leading, spacing: 6) { @@ -65,12 +58,12 @@ struct RequestPurpose: View { NavigationLink(destination: LazyView { SendDoneV(stack: stack.push(), amountToSend: nil, - amountToReceive: amount, + amountToReceive: amountToTransfer, summary: summary, expireDays: expireDays, transactionStarted: $transactionStarted) }) { - Text("Request \(label) \(scopeInfo.currency)") + Text("Request \(amountToTransfer.readableDescription)") // TODO: formatter // .accessibilityFont(buttonFont) } .buttonStyle(TalerButtonStyle(type: .prominent)) @@ -86,23 +79,23 @@ struct RequestPurpose: View { .background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all)) .onAppear { DebugViewC.shared.setViewID(VIEW_REQUEST_PURPOSE, stack: stack.push()) -// print("❗️ PaymentPurpose onAppear") +// print("❗️ RequestPurpose onAppear") } .onDisappear { -// print("❗️ PaymentPurpose onDisappear") +// print("❗️ RequestPurpose onDisappear") } } } // MARK: - #if DEBUG -//struct PaymentPurpose_Previews: PreviewProvider { +//struct RequestPurpose_Previews: PreviewProvider { // static var previews: some View { -// let scopeInfo = ScopeInfo(type: ScopeInfo.ScopeInfoType.exchange, exchangeBaseUrl: DEMOEXCHANGE, currency: LONGCURRENCY) +// let scopeInfo = ScopeInfo(type: .exchange, exchangeBaseUrl: DEMOEXCHANGE, currency: LONGCURRENCY) // @State var summary: String = "pUrPoSe" // @State var expireDays: UInt = 0 -// PaymentPurpose(scopeInfo: scopeInfo, -// centsToTransfer: 5, +// RequestPurpose(scopeInfo: scopeInfo, +// amountToReceive: 5, // fee: "fee", // summary: $summary, // expireDays: $expireDays)