[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 23/30: unify P2P subject
From: |
gnunet |
Subject: |
[taler-taler-ios] 23/30: unify P2P subject |
Date: |
Sun, 19 Nov 2023 23:53:47 +0100 |
This is an automated email from the git hooks/post-receive script.
marc-stibane pushed a commit to branch master
in repository taler-ios.
commit aca4f65273e295805b5e456b016a864c4eab0513
Author: Marc Stibane <marc@taler.net>
AuthorDate: Sun Nov 19 18:17:38 2023 +0100
unify P2P subject
---
TalerWallet1/Helper/CurrencySpecification.swift | 4 +-
TalerWallet1/Views/Exchange/QuiteSomeCoins.swift | 19 ++++++---
TalerWallet1/Views/Peer2peer/RequestPayment.swift | 28 ++++++++++----
TalerWallet1/Views/Peer2peer/SendAmount.swift | 45 ++++++++++++++--------
TalerWallet1/Views/Peer2peer/SendDoneV.swift | 18 ++++-----
TalerWallet1/Views/Peer2peer/SendPurpose.swift | 47 +++++++++++------------
6 files changed, 96 insertions(+), 65 deletions(-)
diff --git a/TalerWallet1/Helper/CurrencySpecification.swift
b/TalerWallet1/Helper/CurrencySpecification.swift
index 982eba7..523a67a 100644
--- a/TalerWallet1/Helper/CurrencySpecification.swift
+++ b/TalerWallet1/Helper/CurrencySpecification.swift
@@ -19,9 +19,9 @@ extension Locale {
}
extension Amount {
- func string(_ currencyInfo: CurrencyInfo?) -> String {
+ func string(_ currencyInfo: CurrencyInfo?, useSymbol: Bool = true) ->
String {
if let currencyInfo {
- return currencyInfo.string(for: valueAsFloatTuple)
+ return currencyInfo.string(for: valueAsFloatTuple, useSymbol:
useSymbol)
} else {
return valueStr
}
diff --git a/TalerWallet1/Views/Exchange/QuiteSomeCoins.swift
b/TalerWallet1/Views/Exchange/QuiteSomeCoins.swift
index a0376f2..8e046a2 100644
--- a/TalerWallet1/Views/Exchange/QuiteSomeCoins.swift
+++ b/TalerWallet1/Views/Exchange/QuiteSomeCoins.swift
@@ -15,6 +15,16 @@ struct SomeCoins {
var tooMany: Bool { numCoins > 999 }
let fee: Amount?
+ func feeLabel(_ currencyInfo: CurrencyInfo?) -> String {
+ return if let fee {
+ invalid ? "Amount too small!"
+ : tooMany ? "Amount too big for a single withdrawal!"
+ : fee.isZero ? "No withdrawal fee"
+ : "- \(fee.string(currencyInfo)) fee"
+ } else {
+ EMPTYSTRING
+ }
+ }
}
extension SomeCoins {
@@ -68,12 +78,9 @@ struct QuiteSomeCoins: View {
}
if shouldShowFee {
if let fee = someCoins.fee {
- Text(someCoins.invalid ? "Amount too small!"
- : someCoins.tooMany ? "Amount too big for a single
withdrawal!"
- : fee.isZero ? "No withdrawal fee"
- : "- \(fee.string(currencyInfo)) fee")
- .foregroundColor((someCoins.invalid || someCoins.tooMany ||
!fee.isZero) ? .red : .primary)
- .accessibilityFont(.body)
+ Text(someCoins.feeLabel(currencyInfo))
+ .foregroundColor((someCoins.invalid || someCoins.tooMany
|| !fee.isZero) ? .red : .primary)
+ .accessibilityFont(.body)
}
}
}
diff --git a/TalerWallet1/Views/Peer2peer/RequestPayment.swift
b/TalerWallet1/Views/Peer2peer/RequestPayment.swift
index 1440e90..e2b3ef8 100644
--- a/TalerWallet1/Views/Peer2peer/RequestPayment.swift
+++ b/TalerWallet1/Views/Peer2peer/RequestPayment.swift
@@ -28,8 +28,18 @@ struct RequestPayment: View {
#endif
let currency = amountToTransfer.currencyStr
let currencyInfo = controller.info(for: currency,
controller.currencyTicker)
- let navTitle = String(localized: "Request \(currency)", comment:
"Dialog Title")
+ let currencySymbol = currencyInfo.specs.altUnitNames?[0] ?? currency
+ let navTitle = String(localized: "NavTitle_Request_Currency",
+ defaultValue: "Request \(currencySymbol)",
+ comment: "NavTitle: Request 'currencySymbol'")
+ let amountStr = amountToTransfer.string(currencyInfo)
+ let amountWithCurrency = amountToTransfer.string(currencyInfo,
useSymbol: false)
+ let buttonTitle = String(localized: "Request \(amountWithCurrency)",
comment: "amount with currency")
+ let navTitle2 = String(localized: "NavTitle_Request_AmountStr",
+ defaultValue: "Request \(amountStr)",
+ comment: "NavTitle: Request 'amountStr'")
+ let _ = symLog.log("currency: \(currency)")
ScrollView { VStack(alignment: .trailing) {
CurrencyInputView(amount: $amountToTransfer,
available: nil,
@@ -46,15 +56,19 @@ struct RequestPayment: View {
let disabled = amountToTransfer.isZero || someCoins.invalid ||
someCoins.tooMany
NavigationLink(destination: LazyView {
- RequestPurpose(stack: stack.push(),
- amountToTransfer: amountToTransfer,
- fee: someCoins.fee,
- summary: $summary,
- expireDays: $expireDays)
+ SendPurpose(stack: stack.push(),
+ amountToSend: nil,
+ amountToReceive: amountToTransfer,
+ navTitle: navTitle2,
+ buttonTitle: buttonTitle,
+ feeLabel: someCoins.feeLabel(currencyInfo),
+ currencyInfo: currencyInfo,
+ summary: $summary,
+ expireDays: $expireDays)
}) { Text("Next") }
.buttonStyle(TalerButtonStyle(type: .prominent))
.disabled(disabled)
- Spacer()
+// Spacer()
} } // ScrollVStack
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.horizontal)
diff --git a/TalerWallet1/Views/Peer2peer/SendAmount.swift
b/TalerWallet1/Views/Peer2peer/SendAmount.swift
index d833f64..48bebee 100644
--- a/TalerWallet1/Views/Peer2peer/SendAmount.swift
+++ b/TalerWallet1/Views/Peer2peer/SendAmount.swift
@@ -22,7 +22,7 @@ struct SendAmount: View {
@State var peerPushCheck: CheckPeerPushDebitResponse? = nil
@State private var expireDays: UInt = SEVENDAYS
@State private var insufficient: Bool = false
- @State private var fee: String = ""
+ @State private var feeStr: String = EMPTYSTRING
private func fee(ppCheck: CheckPeerPushDebitResponse?) -> Amount? {
do {
@@ -35,20 +35,29 @@ struct SendAmount: View {
return nil
}
- var feeLabel: String { String(localized: " + \(fee) payment fee") }
+ var feeLabel: String { feeStr.count > 0 ? String(localized: "+ \(feeStr)
send fee") : EMPTYSTRING }
var body: some View {
#if DEBUG
let _ = Self._printChanges()
let _ = symLog.vlog() // just to get the # to compare it with
.onAppear & onDisappear
#endif
- let currency = amountAvailable.currencyStr
- let _ = symLog.log("currency: \(currency)")
+ let currency = amountToTransfer.currencyStr
let currencyInfo = controller.info(for: currency,
controller.currencyTicker)
- let navTitle = String(localized: "Send \(currency)", comment: "Dialog
Title")
+ let currencySymbol = currencyInfo.specs.altUnitNames?[0] ?? currency
+ let navTitle = String(localized: "NavTitle_Send_Currency",
+ defaultValue: "Send \(currencySymbol)",
+ comment: "NavTitle: Send 'currencySymbol'")
+ let amountStr = amountToTransfer.string(currencyInfo)
+ let amountWithCurrency = amountToTransfer.string(currencyInfo,
useSymbol: false)
+ let buttonTitle = String(localized: "Send \(amountWithCurrency) now",
comment: "amount with currency")
+ let navTitle2 = String(localized: "NavTitle_Send_AmountStr",
+ defaultValue: "Send \(amountStr)",
+ comment: "NavTitle: Send 'amountStr'")
+
let available = amountAvailable.string(currencyInfo)
- let _ = symLog.log("available: \(available)")
- let current = amountToTransfer.string(currencyInfo)
+ let _ = symLog.log("currency: \(currency), available: \(available)")
+ let amountVoiceOver = amountToTransfer.string(currencyInfo)
let insufficientLabel = String(localized: "You don't have enough
\(currency).")
let insufficientLabel2 = String(localized: "but you only have
\(available) to send.")
@@ -70,16 +79,18 @@ struct SendAmount: View {
NavigationLink(destination: LazyView {
SendPurpose(stack: stack.push(),
- amountAvailable: amountAvailable,
- amountToTransfer: amountToTransfer,
- fee: fee,
+ amountToSend: amountToTransfer,
+ amountToReceive: nil,
+ navTitle: navTitle2,
+ buttonTitle: buttonTitle,
+ feeLabel: feeLabel,
currencyInfo: currencyInfo,
summary: $summary,
expireDays: $expireDays)
}) { Text("Next") }
.buttonStyle(TalerButtonStyle(type: .prominent))
.disabled(disabled)
- Spacer()
+// Spacer()
} } // ScrollVStack
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.horizontal)
@@ -95,16 +106,16 @@ struct SendAmount: View {
.task(id: amountToTransfer.value) {
do {
insufficient = try amountToTransfer > amountAvailable
- print("current: \(current)")
+ print("amountStr: \(amountVoiceOver)")
} catch {
print("Yikes❗️ insufficient failed❗️")
insufficient = true
}
if insufficient {
- announce(this: "\(current), \(insufficientLabel2)")
+ announce(this: "\(amountVoiceOver), \(insufficientLabel2)")
} else if amountToTransfer.isZero {
- fee = EMPTYSTRING
+ feeStr = EMPTYSTRING
} else {
do {
let ppCheck = try await
model.checkPeerPushDebitM(amountToTransfer)
@@ -112,9 +123,9 @@ struct SendAmount: View {
// TODO: set from exchange
// agePicker.setAges(ages: peerPushCheck?.ageRestrictionOptions)
if let feeAmount = fee(ppCheck: peerPushCheck) {
- fee = feeAmount.string(currencyInfo)
- } else { fee = EMPTYSTRING }
- announce(this: "\(current), \(feeLabel)")
+ feeStr = feeAmount.string(currencyInfo)
+ } else { feeStr = EMPTYSTRING }
+ announce(this: "\(amountVoiceOver), \(feeLabel)")
} catch { // TODO: error
symLog.log(error.localizedDescription)
peerPushCheck = nil
diff --git a/TalerWallet1/Views/Peer2peer/SendDoneV.swift
b/TalerWallet1/Views/Peer2peer/SendDoneV.swift
index b52b4bc..776e9be 100644
--- a/TalerWallet1/Views/Peer2peer/SendDoneV.swift
+++ b/TalerWallet1/Views/Peer2peer/SendDoneV.swift
@@ -10,7 +10,12 @@ import SymLog
struct SendDoneV: View {
private let symLog = SymLogV()
let stack: CallStack
- let navTitle = String(localized: "P2P Ready")
+ let amountToSend: Amount?
+ let amountToReceive: Amount?
+ let summary: String
+ let expireDays: UInt
+ @Binding var transactionStarted: Bool
+
@EnvironmentObject private var model: WalletModel
#if DEBUG
@AppStorage("developerMode") var developerMode: Bool = true
@@ -19,12 +24,7 @@ struct SendDoneV: View {
#endif
@AppStorage("myListStyle") var myListStyle: MyListStyle = .automatic
- let amountToSend: Amount?
- let amountToReceive: Amount?
- let summary: String
- let expireDays: UInt
- @Binding var transactionStarted: Bool
-
+ let navTitle = String(localized: "P2P Ready")
@State private var transactionId: String? = nil
func reloadOneAction(_ transactionId: String) async throws -> Transaction {
@@ -72,7 +72,7 @@ struct SendDoneV: View {
let terms = PeerContractTerms(amount: amountToSend,
summary: summary,
purse_expiration: timestamp)
- // TODO: user might choose baseURL
+ // TODO: let user choose baseURL
let response = try await model.initiatePeerPushDebitM(nil,
terms: terms)
// will switch from WithdrawProgressView to
TransactionDetailView
transactionId = response.transactionId
@@ -80,7 +80,7 @@ struct SendDoneV: View {
let terms = PeerContractTerms(amount: amountToReceive,
summary: summary,
purse_expiration: timestamp)
- // TODO: user might choose baseURL
+ // TODO: let user choose baseURL
let response = try await
model.initiatePeerPullCreditM(nil, terms: terms)
// will switch from WithdrawProgressView to
TransactionDetailView
transactionId = response.transactionId
diff --git a/TalerWallet1/Views/Peer2peer/SendPurpose.swift
b/TalerWallet1/Views/Peer2peer/SendPurpose.swift
index ba17c92..9d6ff77 100644
--- a/TalerWallet1/Views/Peer2peer/SendPurpose.swift
+++ b/TalerWallet1/Views/Peer2peer/SendPurpose.swift
@@ -10,14 +10,17 @@ struct SendPurpose: View {
private let symLog = SymLogV(0)
let stack: CallStack
- let amountAvailable: Amount
- let amountToTransfer: Amount
- let fee: String
+ let amountToSend: Amount?
+ let amountToReceive: Amount?
+// let amountToTransfer: Amount
+ let navTitle: String
+ let buttonTitle: String
+ let feeLabel: String
let currencyInfo: CurrencyInfo
@Binding var summary: String
@Binding var expireDays: UInt
+
@AppStorage("iconOnly") var iconOnly: Bool = false
- let navTitle = String(localized: "NavTitle_Send_Subject", defaultValue:
"Subject", comment: "NavTitle for entering the subject for Send-Money")
@State private var transactionStarted: Bool = false
@FocusState private var isFocused: Bool
@@ -27,30 +30,31 @@ struct SendPurpose: View {
let _ = Self._printChanges()
let _ = symLog.vlog() // just to get the # to compare it with
.onAppear & onDisappear
#endif
- let currency = amountAvailable.currencyStr
- let current = amountToTransfer.string(currencyInfo)
- ScrollView { VStack (spacing: 6) {
- Text(current)
- Text("+ \(fee) payment fee")
- .accessibilityFont(.body)
- .foregroundColor(.red)
- VStack(alignment: .leading, spacing: 6) {
+ ScrollView { VStack (alignment: .leading, spacing: 6) {
+ if feeLabel.count > 0 {
+ HStack {
+ Spacer()
+ Text(feeLabel)
+ .foregroundColor(.red)
+ .accessibilityFont(.body)
+ }
+ }
if !iconOnly {
Text("Enter subject:") // Purpose
- .accessibilityFont(.title2)
+ .accessibilityFont(.title3)
.accessibilityAddTraits(.isHeader)
.accessibilityRemoveTraits(.isStaticText)
.padding(.top)
}
Group { if #available(iOS 16.0, *) {
- TextField("Subject", text: $summary, axis: .vertical)
+ TextField(iconOnly ? "Subject" : EMPTYSTRING, text:
$summary, axis: .vertical)
.focused($isFocused)
.lineLimit(2...)
} else {
TextField("Subject", text: $summary)
.focused($isFocused)
// .lineLimit(2...5) // lineLimit' is only available in
iOS 16.0 or newer
- } }
+ } } // Group for iOS16+ & iOS15
.accessibilityFont(.title2)
.foregroundColor(WalletColors().fieldForeground) //
text color
.background(WalletColors().fieldBackground)
@@ -77,23 +81,18 @@ struct SendPurpose: View {
let disabled = (expireDays == 0) || (summary.count < 1) //
TODO: check amountAvailable
NavigationLink(destination: LazyView {
SendDoneV(stack: stack.push(),
- amountToSend: amountToTransfer,
- amountToReceive: nil,
+ amountToSend: amountToSend,
+ amountToReceive: amountToReceive,
summary: summary,
expireDays: expireDays,
transactionStarted: $transactionStarted)
}) {
- Text("Send \(current) now", comment: "amountToTransfer")
// TODO: currency formatter
+ Text(buttonTitle)
}
.buttonStyle(TalerButtonStyle(type: .prominent))
.disabled(disabled)
.accessibilityHint(disabled ? "enabled when subject and
expiration are set" : EMPTYSTRING)
-
- Spacer()
- }
- .frame(maxWidth: .infinity, alignment: .leading)
- .padding(.horizontal)
- } } // ScrollVStack
+ }.padding(.horizontal) } // ScrollVStack
.navigationTitle(navTitle)
.background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all))
.onAppear {
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] branch master updated (e79881c -> b01070b), gnunet, 2023/11/19
- [taler-taler-ios] 02/30: Use "nu" (instead of "te") for Null, gnunet, 2023/11/19
- [taler-taler-ios] 04/30: cleanup, debugging, gnunet, 2023/11/19
- [taler-taler-ios] 05/30: ScrollVStack, cleanup, gnunet, 2023/11/19
- [taler-taler-ios] 01/30: Bugfix: Arithmetic error, gnunet, 2023/11/19
- [taler-taler-ios] 06/30: Notifications, gnunet, 2023/11/19
- [taler-taler-ios] 19/30: tabbed button strings, gnunet, 2023/11/19
- [taler-taler-ios] 18/30: cleanup, gnunet, 2023/11/19
- [taler-taler-ios] 07/30: KYC, gnunet, 2023/11/19
- [taler-taler-ios] 03/30: Dismiss keyboard, gnunet, 2023/11/19
- [taler-taler-ios] 23/30: unify P2P subject,
gnunet <=
- [taler-taler-ios] 21/30: fix shortcuts, gnunet, 2023/11/19
- [taler-taler-ios] 26/30: badge for button, gnunet, 2023/11/19
- [taler-taler-ios] 15/30: ScrollVStack, gnunet, 2023/11/19
- [taler-taler-ios] 25/30: cleanup, gnunet, 2023/11/19
- [taler-taler-ios] 24/30: cleanup P2P, gnunet, 2023/11/19
- [taler-taler-ios] 17/30: accessibilityAddTraits, gnunet, 2023/11/19
- [taler-taler-ios] 11/30: cleanup, gnunet, 2023/11/19
- [taler-taler-ios] 29/30: cleanup notifications, gnunet, 2023/11/19
- [taler-taler-ios] 30/30: Bump version to 0.9.3 (27), gnunet, 2023/11/19
- [taler-taler-ios] 27/30: Remove PendingOps, gnunet, 2023/11/19