[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 47/69: single routine for rendering amounts
From: |
gnunet |
Subject: |
[taler-taler-ios] 47/69: single routine for rendering amounts |
Date: |
Fri, 19 Jan 2024 09:02:20 +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 bd89805251278c1fa306f411eba6d3f00b86f846
Author: Marc Stibane <marc@taler.net>
AuthorDate: Wed Jan 17 23:37:42 2024 +0100
single routine for rendering amounts
---
TalerWallet.xcodeproj/project.pbxproj | 18 +++--
TalerWallet1/Controllers/Controller.swift | 25 +++++--
TalerWallet1/Views/Balances/BalanceRowView.swift | 22 +++---
TalerWallet1/Views/Balances/PendingRowView.swift | 21 +-----
TalerWallet1/Views/HelperViews/AmountRowV.swift | 80 ++++++++++++++++++++++
TalerWallet1/Views/HelperViews/AmountV.swift | 38 ++++++++++
TalerWallet1/Views/HelperViews/AmountView.swift | 44 ------------
.../Views/Transactions/ThreeAmountsV.swift | 12 ++--
.../Views/Transactions/TransactionRowView.swift | 20 ++----
9 files changed, 172 insertions(+), 108 deletions(-)
diff --git a/TalerWallet.xcodeproj/project.pbxproj
b/TalerWallet.xcodeproj/project.pbxproj
index 2e1557a..ce4c031 100644
--- a/TalerWallet.xcodeproj/project.pbxproj
+++ b/TalerWallet.xcodeproj/project.pbxproj
@@ -11,6 +11,8 @@
4E2254972A822B8100E41D29 /* payment_received.m4a in Resources
*/ = {isa = PBXBuildFile; fileRef = 4E2254952A822B8100E41D29 /*
payment_received.m4a */; };
4E2254982A822B8100E41D29 /* payment_sent.m4a in Resources */ =
{isa = PBXBuildFile; fileRef = 4E2254962A822B8100E41D29 /* payment_sent.m4a */;
};
4E2D8DD32B3F513800234039 /* MarkdownUI in Frameworks */ = {isa
= PBXBuildFile; productRef = 4E2D8DD22B3F513800234039 /* MarkdownUI */; };
+ 4E2D8DD52B45822A00234039 /* AmountV.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4E2D8DD42B45822A00234039 /* AmountV.swift */; };
+ 4E2D8DD62B45822A00234039 /* AmountV.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4E2D8DD42B45822A00234039 /* AmountV.swift */; };
4E3327BA2AD1635100BF5AD6 /* AsyncSemaphore.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E3327B92AD1635100BF5AD6 /*
AsyncSemaphore.swift */; };
4E3327BB2AD1635100BF5AD6 /* AsyncSemaphore.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E3327B92AD1635100BF5AD6 /*
AsyncSemaphore.swift */; };
4E363CBC2A237E0900D7E98C /* URL+id+iban.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E363CBB2A237E0900D7E98C /* URL+id+iban.swift
*/; };
@@ -66,7 +68,7 @@
4E3EAE482A990778009F1BE8 /* PayTemplateView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EBA56402A7FF5200084948B /*
PayTemplateView.swift */; };
4E3EAE492A990778009F1BE8 /* ManualWithdrawDone.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB431662A1E55C700C5690E /*
ManualWithdrawDone.swift */; };
4E3EAE4B2A990778009F1BE8 /* ShareSheet.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E753A072A0B6A5F002D9328 /* ShareSheet.swift */;
};
- 4E3EAE4C2A990778009F1BE8 /* AmountView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095492989CBFE0043A8A1 /* AmountView.swift */;
};
+ 4E3EAE4C2A990778009F1BE8 /* AmountRowV.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095492989CBFE0043A8A1 /* AmountRowV.swift */;
};
4E3EAE4D2A990778009F1BE8 /* P2pAcceptDone.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E3B4BC22A42252300CC88B8 /* P2pAcceptDone.swift
*/; };
4E3EAE4E2A990778009F1BE8 /* AnyTransition+backslide.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E363CBD2A23CB2100D7E98C /*
AnyTransition+backslide.swift */; };
4E3EAE4F2A990778009F1BE8 /* TwoRowButtons.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB065432A4CD1A80039B91D /* TwoRowButtons.swift
*/; };
@@ -211,7 +213,7 @@
4EB095692989CBFE0043A8A1 /* ErrorView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095452989CBFE0043A8A1 /* ErrorView.swift */;
};
4EB0956A2989CBFE0043A8A1 /* Buttons.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4EB095472989CBFE0043A8A1 /* Buttons.swift */; };
4EB0956B2989CBFE0043A8A1 /* TextFieldAlert.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095482989CBFE0043A8A1 /*
TextFieldAlert.swift */; };
- 4EB0956C2989CBFE0043A8A1 /* AmountView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095492989CBFE0043A8A1 /* AmountView.swift */;
};
+ 4EB0956C2989CBFE0043A8A1 /* AmountRowV.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095492989CBFE0043A8A1 /* AmountRowV.swift */;
};
4EB0956D2989CBFE0043A8A1 /* LoadingView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0954A2989CBFE0043A8A1 /* LoadingView.swift
*/; };
4EB0956E2989CBFE0043A8A1 /* Model+Pending.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0954C2989CBFE0043A8A1 /* Model+Pending.swift
*/; };
4EB3136129FEE79B007D68BC /* P2PReadyV.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB3136029FEE79B007D68BC /* P2PReadyV.swift */;
};
@@ -291,6 +293,7 @@
4E16E12229F3BB99008B9C86 /* CurrencySpecification.swift */ =
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.swift; path = CurrencySpecification.swift; sourceTree = "<group>"; };
4E2254952A822B8100E41D29 /* payment_received.m4a */ = {isa =
PBXFileReference; lastKnownFileType = file; path = payment_received.m4a;
sourceTree = "<group>"; };
4E2254962A822B8100E41D29 /* payment_sent.m4a */ = {isa =
PBXFileReference; lastKnownFileType = file; path = payment_sent.m4a; sourceTree
= "<group>"; };
+ 4E2D8DD42B45822A00234039 /* AmountV.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path = AmountV.swift;
sourceTree = "<group>"; };
4E3327B92AD1635100BF5AD6 /* AsyncSemaphore.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= AsyncSemaphore.swift; sourceTree = "<group>"; };
4E363CBB2A237E0900D7E98C /* URL+id+iban.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= "URL+id+iban.swift"; sourceTree = "<group>"; };
4E363CBD2A23CB2100D7E98C /* AnyTransition+backslide.swift */ =
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.swift; path = "AnyTransition+backslide.swift"; sourceTree =
"<group>"; };
@@ -385,7 +388,7 @@
4EB095452989CBFE0043A8A1 /* ErrorView.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= ErrorView.swift; sourceTree = "<group>"; };
4EB095472989CBFE0043A8A1 /* Buttons.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= Buttons.swift; sourceTree = "<group>"; };
4EB095482989CBFE0043A8A1 /* TextFieldAlert.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= TextFieldAlert.swift; sourceTree = "<group>"; };
- 4EB095492989CBFE0043A8A1 /* AmountView.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= AmountView.swift; sourceTree = "<group>"; };
+ 4EB095492989CBFE0043A8A1 /* AmountRowV.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= AmountRowV.swift; sourceTree = "<group>"; };
4EB0954A2989CBFE0043A8A1 /* LoadingView.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= LoadingView.swift; sourceTree = "<group>"; };
4EB0954C2989CBFE0043A8A1 /* Model+Pending.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= "Model+Pending.swift"; sourceTree = "<group>"; };
4EB3136029FEE79B007D68BC /* P2PReadyV.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= P2PReadyV.swift; sourceTree = "<group>"; };
@@ -729,6 +732,7 @@
4EF840A62A0B85F400EE0D47 /* CopyShare.swift */,
4ECB62812A0BB01D004ABBB7 /* SelectDays.swift */,
4EA551242A2C923600FEC9A8 /*
CurrencyInputView.swift */,
+ 4E2D8DD42B45822A00234039 /* AmountV.swift */,
4E53A33629F50B7B00830EC2 /* CurrencyField.swift
*/,
4EEC157229F8242800D46A03 /*
QRGeneratorView.swift */,
4E5A88F42A38A4FD00072618 /*
QRCodeDetailView.swift */,
@@ -737,7 +741,7 @@
4E983C2B2ADC416800FA9CC5 /*
View+fitsSideBySide.swift */,
4EB095482989CBFE0043A8A1 /*
TextFieldAlert.swift */,
4EBA82AA2A3EB2CA00E5F39A /*
TransactionButton.swift */,
- 4EB095492989CBFE0043A8A1 /* AmountView.swift */,
+ 4EB095492989CBFE0043A8A1 /* AmountRowV.swift */,
4EB0954A2989CBFE0043A8A1 /* LoadingView.swift
*/,
4EB095432989CBFE0043A8A1 /*
LaunchAnimationView.swift */,
4EFA395F2AA7946B00742548 /* ToSButtonView.swift
*/,
@@ -1075,11 +1079,12 @@
4E3EAE452A990778009F1BE8 /* P2PReadyV.swift in
Sources */,
4E3EAE462A990778009F1BE8 /*
TextFieldAlert.swift in Sources */,
4E3EAE472A990778009F1BE8 /*
QuiteSomeCoins.swift in Sources */,
+ 4E2D8DD52B45822A00234039 /* AmountV.swift in
Sources */,
4E3EAE482A990778009F1BE8 /*
PayTemplateView.swift in Sources */,
4E3EAE492A990778009F1BE8 /*
ManualWithdrawDone.swift in Sources */,
4E3EAE4B2A990778009F1BE8 /* ShareSheet.swift in
Sources */,
4EC4008F2AE8019700DF72C7 /*
ExchangeRowView.swift in Sources */,
- 4E3EAE4C2A990778009F1BE8 /* AmountView.swift in
Sources */,
+ 4E3EAE4C2A990778009F1BE8 /* AmountRowV.swift in
Sources */,
4E605DBA2AB05FB6002FB9A7 /* BarGraph.swift in
Sources */,
4E3EAE4D2A990778009F1BE8 /* P2pAcceptDone.swift
in Sources */,
4E3EAE4E2A990778009F1BE8 /*
AnyTransition+backslide.swift in Sources */,
@@ -1180,11 +1185,12 @@
4EB3136129FEE79B007D68BC /* P2PReadyV.swift in
Sources */,
4EB0956B2989CBFE0043A8A1 /*
TextFieldAlert.swift in Sources */,
4EBA82AD2A3F580500E5F39A /*
QuiteSomeCoins.swift in Sources */,
+ 4E2D8DD62B45822A00234039 /* AmountV.swift in
Sources */,
4EBA56412A7FF5200084948B /*
PayTemplateView.swift in Sources */,
4EB431672A1E55C700C5690E /*
ManualWithdrawDone.swift in Sources */,
4E753A082A0B6A5F002D9328 /* ShareSheet.swift in
Sources */,
4EC400902AE8019700DF72C7 /*
ExchangeRowView.swift in Sources */,
- 4EB0956C2989CBFE0043A8A1 /* AmountView.swift in
Sources */,
+ 4EB0956C2989CBFE0043A8A1 /* AmountRowV.swift in
Sources */,
4E605DBB2AB05FB6002FB9A7 /* BarGraph.swift in
Sources */,
4E3B4BC32A42252300CC88B8 /* P2pAcceptDone.swift
in Sources */,
4E363CBE2A23CB2100D7E98C /*
AnyTransition+backslide.swift in Sources */,
diff --git a/TalerWallet1/Controllers/Controller.swift
b/TalerWallet1/Controllers/Controller.swift
index cb24e39..6d122da 100644
--- a/TalerWallet1/Controllers/Controller.swift
+++ b/TalerWallet1/Controllers/Controller.swift
@@ -69,21 +69,36 @@ class Controller: ObservableObject {
return nil
}
- func info(for currency: String, _ ticker: Int) -> CurrencyInfo {
- if ticker != currencyTicker {
- print("❗️Yikes")
- }
+ func info(for currency: String) -> CurrencyInfo? {
for info in currencyInfos {
if info.scope.currency == currency {
return info
}
}
- return CurrencyInfo.zero(currency)
+ return nil
+ }
+ func info(for currency: String, _ ticker: Int) -> CurrencyInfo {
+ if ticker != currencyTicker {
+ print("❗️Yikes")
+ }
+ return info(for: currency) ?? CurrencyInfo.zero(currency)
}
@MainActor
func getInfo(from exchangeBaseUrl: String, model: WalletModel) async ->
CurrencyInfo? {
if let exchange = await model.getExchangeByUrl(url: exchangeBaseUrl) {
+// let scopeInfo = exchange.scopeInfo
+// if let info = hasInfo(for: scopeInfo.currency) {
+// return info
+// }
+// do {
+// let info = try await model.getCurrencyInfoM(scope:
scopeInfo, delay: 0)
+// await setInfo(info)
+// return info
+// } catch {
+// return nil
+// }
+
if let scopeInfo = exchange.scopeInfo {
if let info = hasInfo(for: scopeInfo.currency) {
return info
diff --git a/TalerWallet1/Views/Balances/BalanceRowView.swift
b/TalerWallet1/Views/Balances/BalanceRowView.swift
index 7b738b7..130c379 100644
--- a/TalerWallet1/Views/Balances/BalanceRowView.swift
+++ b/TalerWallet1/Views/Balances/BalanceRowView.swift
@@ -5,8 +5,8 @@
import SwiftUI
import taler_swift
-struct BalanceButton: View {
- let amountStr: String
+struct BalanceCell: View {
+ let amount: Amount
let sizeCategory: ContentSizeCategory
let rowAction: () -> Void
let balanceDest: LazyView<TransactionsListView>?
@@ -17,13 +17,11 @@ struct BalanceButton: View {
/// Renders the Balance button. "Balance" leading, amountStr trailing. If
it doesn't fit in one row then
/// amount (trailing) goes underneath "Balance" (leading).
var body: some View {
- let amountText = Text(amountStr)
- .accessibilityFont(.title)
+ let amountV = AmountV(amount: amount, large: true)
.foregroundColor(.primary)
- .monospacedDigit()
let hLayout = HStack(spacing: 0) {
Spacer(minLength: 0)
- amountText
+ amountV
}
let balanceCell = Group {
if iconOnly {
@@ -85,12 +83,10 @@ struct BalanceRowView: View {
comment: "`Request Payment´ in Balances - set
exactly 1 \\t for line break")
var body: some View {
VStack (alignment: .trailing, spacing: 6) {
- let currencyInfo = controller.info(for: amount.currencyStr,
controller.currencyTicker)
- let amountStr = amount.string(currencyInfo)
- BalanceButton(amountStr: amountStr,
- sizeCategory: sizeCategory,
- rowAction: rowAction,
- balanceDest: balanceDest)
+ BalanceCell(amount: amount,
+ sizeCategory: sizeCategory,
+ rowAction: rowAction,
+ balanceDest: balanceDest)
// .border(.red)
let sendTitle = iconOnly ? sendTitle0 : sendTitle1
@@ -125,8 +121,6 @@ struct BalanceRowView_Previews: PreviewProvider {
var body: some View {
let test = Amount(currency: TESTCURRENCY, cent: 123)
let demo = Amount(currency: DEMOCURRENCY, cent: 123456)
-// let testStr = test.string(testInfo)
-// let demoStr = demo.string(demoInfo)
List {
Section {
diff --git a/TalerWallet1/Views/Balances/PendingRowView.swift
b/TalerWallet1/Views/Balances/PendingRowView.swift
index 62f3292..65bf5d6 100644
--- a/TalerWallet1/Views/Balances/PendingRowView.swift
+++ b/TalerWallet1/Views/Balances/PendingRowView.swift
@@ -12,8 +12,7 @@ struct PendingRowView: View {
let shouldConfirm: Bool
let needsKYC: Bool
- @Environment(\.sizeCategory) var sizeCategory
- @EnvironmentObject private var controller: Controller
+// @Environment(\.sizeCategory) var sizeCategory
@AppStorage("iconOnly") var iconOnly: Bool = false
let inTitle0 = String(localized: "TitleIncoming_Short", defaultValue:
"Incoming",
@@ -34,11 +33,8 @@ struct PendingRowView: View {
let outTitle = iconOnly ? outTitle0 : outTitle1
let pendingTitle = incoming ? inTitle : outTitle
- let currencyInfo = controller.info(for: amount.currencyStr,
controller.currencyTicker)
- let amountText = Text(amount.string(currencyInfo))
+ let amountText = AmountV(amount)
.foregroundColor(pendingColor)
- .accessibilityFont(.title2)
- .monospacedDigit()
// this is the default view for iOS 15
let vStack = VStack {
@@ -72,19 +68,6 @@ struct PendingRowView: View {
}
// MARK: -
#if DEBUG
-func PreviewCurrencyInfo(_ currency: String, digits: Int) -> CurrencyInfo {
- let unitName = digits == 0 ? "テ" : "ク" // do not use real currency
symbols like "¥" : "€"
- let scope = ScopeInfo(type: .global, currency: currency)
- let specs = CurrencySpecification(name: currency,
- code: currency,
- fractionalInputDigits: digits,
- fractionalNormalDigits: digits,
- fractionalTrailingZeroDigits: digits,
- altUnitNames: [0 : unitName])
- let previewFormatter = CurrencyFormatter.formatter(scope: scope, specs:
specs)
- return CurrencyInfo(scope: scope, specs: specs, formatter:
previewFormatter)
-}
-
@MainActor
fileprivate struct Preview_Content: View {
var body: some View {
diff --git a/TalerWallet1/Views/HelperViews/AmountRowV.swift
b/TalerWallet1/Views/HelperViews/AmountRowV.swift
new file mode 100644
index 0000000..ed5f6df
--- /dev/null
+++ b/TalerWallet1/Views/HelperViews/AmountRowV.swift
@@ -0,0 +1,80 @@
+/*
+ * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * See LICENSE.md
+ */
+import SwiftUI
+import taler_swift
+
+// Title and Amount
+struct AmountRowV: View {
+ let title: String
+ let amount: Amount
+ let color: Color
+ let large: Bool // set to false for QR or IBAN
+
+ var body: some View {
+ let titleV = Text(title)
+ .multilineTextAlignment(.leading)
+ .accessibilityFont(.body)
+ let amountV = AmountV(amount: amount, large: large)
+ .foregroundColor(color)
+ let verticalV = VStack(alignment: .leading) {
+ titleV
+ HStack(alignment: .lastTextBaseline) {
+ Spacer(minLength: 2)
+ amountV
+ }
+ }
+ Group {
+ if #available(iOS 16.0, *) {
+ ViewThatFits(in: .horizontal) {
+ HStack(alignment: .lastTextBaseline) {
+ titleV//.border(.orange)
+ Spacer(minLength: 2)
+ amountV//.border(.gray)
+ }
+ HStack(alignment: .lastTextBaseline) {
+ titleV//.border(.blue)
+ .lineLimit(2, reservesSpace: true)
+ .fixedSize(horizontal: false, vertical: true)
+ Spacer(minLength: 2)
+ amountV//.border(.gray)
+ }
+ verticalV
+ }
+ } else { // view for iOS 15
+ verticalV
+ }
+ }
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .listRowSeparator(.hidden)
+ }
+}
+extension AmountRowV {
+ init(title: String, amount: Amount, color: Color) {
+ self.title = title
+ self.amount = amount
+ self.color = color
+ self.large = true
+ }
+}
+
+// MARK: -
+fileprivate func talerFromStr(_ from: String) -> Amount {
+ do {
+ let amount = try Amount(fromString: from)
+ return amount
+ } catch {
+ return Amount(currency: "Taler", cent: 480)
+ }
+}
+#Preview {
+ List {
+ let fee = Amount(currency: "Taler", cent: 20)
+ AmountRowV(title: "Fee", amount: fee, color: Color("Outgoing"), large:
false)
+ let cents = Amount(currency: "Taler", cent: 480)
+ AmountRowV(title: "Cents", amount: cents, color: Color("Incoming"))
+ let amount = talerFromStr("Taler:4.80")
+ AmountRowV(title: "Chosen amount to withdraw", amount: amount, color:
Color("Incoming"))
+ }
+}
diff --git a/TalerWallet1/Views/HelperViews/AmountV.swift
b/TalerWallet1/Views/HelperViews/AmountV.swift
new file mode 100644
index 0000000..5a7760f
--- /dev/null
+++ b/TalerWallet1/Views/HelperViews/AmountV.swift
@@ -0,0 +1,38 @@
+/*
+ * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * See LICENSE.md
+ */
+import SwiftUI
+import taler_swift
+
+struct AmountV: View {
+ let amount: Amount
+ let large: Bool // set to false for QR or IBAN
+
+ @EnvironmentObject private var controller: Controller
+
+ var amountStr: String {
+ if let currencyInfo = controller.info(for: amount.currencyStr) {
+ return amount.string(currencyInfo)
+ }
+ return amount.readableDescription
+ }
+
+ var body: some View {
+ Text(amountStr)
+ .multilineTextAlignment(.center)
+ .accessibilityFont(large ? .title : .title2)
+// .fontWeight(large ? .medium : .regular) // @available(iOS
16.0, *)
+ .monospacedDigit()
+ }
+}
+extension AmountV {
+ init(_ amount: Amount) {
+ self.amount = amount
+ self.large = false
+ }
+}
+// MARK: -
+//#Preview {
+// AmountV()
+//}
diff --git a/TalerWallet1/Views/HelperViews/AmountView.swift
b/TalerWallet1/Views/HelperViews/AmountView.swift
deleted file mode 100644
index 2015115..0000000
--- a/TalerWallet1/Views/HelperViews/AmountView.swift
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
- * See LICENSE.md
- */
-import SwiftUI
-
-struct AmountView: View {
- let title: String
- let value: String
- let color: Color
- let large: Bool // set to false for QR or IBAN
-
- var body: some View {
- VStack(alignment: .leading) {
- Text(title)
- .fixedSize(horizontal: false, vertical: true) // wrap in
scrollview
- .multilineTextAlignment(.leading)
- .accessibilityFont(.body)
- HStack {
- Spacer()
- Text(value)
- .fixedSize(horizontal: false, vertical: true) // wrap in
scrollview
- .multilineTextAlignment(.center)
- .foregroundColor(color)
- .accessibilityFont(large ? .title : .title2)
-// .fontWeight(large ? .medium : .regular) //
@available(iOS 16.0, *)
- .monospacedDigit()
- }
- }
- .frame(maxWidth: .infinity, alignment: .leading)
- .listRowSeparator(.hidden)
- }
-}
-
-struct AmountView_Previews: PreviewProvider {
- static var previews: some View {
- List {
- AmountView(title: "Fee", value: "- 0,2 Taler",
- color: Color("Outgoing"), large: true)
- AmountView(title: "Coins", value: "4,8 Taler",
- color: Color("Incoming"), large: false)
- }
- }
-}
diff --git a/TalerWallet1/Views/Transactions/ThreeAmountsV.swift
b/TalerWallet1/Views/Transactions/ThreeAmountsV.swift
index 0f9cef0..7442714 100644
--- a/TalerWallet1/Views/Transactions/ThreeAmountsV.swift
+++ b/TalerWallet1/Views/Transactions/ThreeAmountsV.swift
@@ -69,24 +69,24 @@ struct ThreeAmountsV: View {
.lineLimit(4)
.padding(.bottom)
}
- AmountView(title: iconOnly ? topAbbrev : topTitle,
- value: topAmount.readableDescription,
+ AmountRowV(title: iconOnly ? topAbbrev : topTitle,
+ amount: topAmount,
color: labelColor,
large: large)
.padding(.bottom, 4)
.accessibilityElement(children: .combine)
if let fee {
- AmountView(title: iconOnly ? String(localized: "Fee:")
+ AmountRowV(title: iconOnly ? String(localized: "Fee:")
: String(localized: "Exchange
fee:"),
- value: fee.readableDescription,
+ amount: fee,
color: labelColor,
large: false)
.padding(.bottom, 4)
.accessibilityElement(children: .combine)
}
if let bottomAmount {
- AmountView(title: iconOnly ? bottomAbbrev : bottomTitle,
- value: bottomAmount.readableDescription,
+ AmountRowV(title: iconOnly ? bottomAbbrev : bottomTitle,
+ amount: bottomAmount,
color: foreColor,
large: large)
.accessibilityElement(children: .combine)
diff --git a/TalerWallet1/Views/Transactions/TransactionRowView.swift
b/TalerWallet1/Views/Transactions/TransactionRowView.swift
index bf97108..1b80bc2 100644
--- a/TalerWallet1/Views/Transactions/TransactionRowView.swift
+++ b/TalerWallet1/Views/Transactions/TransactionRowView.swift
@@ -42,7 +42,6 @@ struct TransactionRowView: View {
@Environment(\.sizeCategory) var sizeCategory
@Environment(\.colorSchemeContrast) private var colorSchemeContrast
- @EnvironmentObject private var controller: Controller
func needVStack(available: CGFloat, contentWidth: CGFloat, valueWidth:
CGFloat) -> Bool {
available < (contentWidth + valueWidth + 40)
@@ -66,19 +65,12 @@ struct TransactionRowView: View {
: WalletColors().uncompletedColor
let textColor = doneOrPending ? .primary :
increasedContrast ? .secondary : Color(.tertiaryLabel)
- let currencyInfo = controller.info(for: currency,
controller.currencyTicker)
let iconBadge = IconBadge(foreColor: foreColor, done: done, incoming:
incoming,
shouldConfirm: shouldConfirm, needsKYC:
needsKYC)
- let amountStr = common.amountEffective.string(currencyInfo)
- let amountText = Text(amountStr)
- .accessibilityFont(.title2)
+ let amountV = AmountV(common.amountEffective)
.foregroundColor(foreColor)
- .monospacedDigit()
- let amount = HStack(spacing: 0) {
- Spacer(minLength: 0)
- amountText
- }
+
let topString = transaction.localizedType
let centerTop = Text(topString)
.foregroundColor(textColor)
@@ -101,7 +93,7 @@ struct TransactionRowView: View {
}
Spacer(minLength: 2)
}
- amountText
+ amountV
}
let layout2 = VStack(spacing: 0) {
@@ -113,7 +105,7 @@ struct TransactionRowView: View {
centerBottom
Spacer(minLength: 2)
}//.border(.green)
- amountText//.border(.red)
+ amountV//.border(.red)
}//.border(.orange)
}
@@ -125,7 +117,7 @@ struct TransactionRowView: View {
centerTop
Spacer(minLength: 2)
}
- amountText
+ amountV
}
centerBottom
}
@@ -136,7 +128,7 @@ struct TransactionRowView: View {
iconBadge//.border(.green)
Spacer(minLength: 2
)
- amountText//.border(.green)
+ amountV//.border(.green)
}//.border(.orange)
centerBottom
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] 66/69: InterfaceOrientation, (continued)
- [taler-taler-ios] 66/69: InterfaceOrientation, gnunet, 2024/01/19
- [taler-taler-ios] 41/69: AppIcon blue, gnunet, 2024/01/19
- [taler-taler-ios] 38/69: remove, gnunet, 2024/01/19
- [taler-taler-ios] 39/69: Bump version to 0.9.3 (34), gnunet, 2024/01/19
- [taler-taler-ios] 35/69: Markdown for ToS, gnunet, 2024/01/19
- [taler-taler-ios] 37/69: dbg+cleanup, gnunet, 2024/01/19
- [taler-taler-ios] 53/69: Summary no longer twice, gnunet, 2024/01/19
- [taler-taler-ios] 34/69: tintcolor (blue) for links, gnunet, 2024/01/19
- [taler-taler-ios] 57/69: use cent initializer, gnunet, 2024/01/19
- [taler-taler-ios] 64/69: show minor in tx details, gnunet, 2024/01/19
- [taler-taler-ios] 47/69: single routine for rendering amounts,
gnunet <=
- [taler-taler-ios] 44/69: payment_received only for withdrawals, gnunet, 2024/01/19