commit 1afc225066b511d4ba2358493697edbcd4821b5d
parent 0d09d7df346fde190f097a215d9fcf8c8ab7d037
Author: Marc Stibane <marc@taler.net>
Date: Sun, 12 Nov 2023 18:14:34 +0100
amountToTransfer Request
Diffstat:
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)