[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] 10/15: [taler-android] Improve handling of currenc
From: |
gnunet |
Subject: |
[taler-taler-android] 10/15: [taler-android] Improve handling of currencies with no symbol |
Date: |
Wed, 27 Mar 2024 18:27:13 +0100 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a commit to branch master
in repository taler-android.
commit 881eeabd3999c75c1961eacb2921b41d3a8f58bb
Author: Iván Ávalos <avalos@disroot.org>
AuthorDate: Thu Mar 14 10:11:54 2024 -0600
[taler-android] Improve handling of currencies with no symbol
(cherry picked from commit c9371584fedf8783ab472d32deb35b24b0329cab)
---
.../src/main/java/net/taler/common/Amount.kt | 7 ++++--
.../java/net/taler/common/CurrencySpecification.kt | 2 +-
.../src/test/java/net/taler/common/AmountTest.kt | 28 ++++++++++++++++++++--
.../java/net/taler/wallet/ReceiveFundsFragment.kt | 2 +-
.../java/net/taler/wallet/SendFundsFragment.kt | 2 +-
5 files changed, 34 insertions(+), 7 deletions(-)
diff --git a/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
b/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
index 1652056..3e3bd0a 100644
--- a/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
+++ b/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
@@ -240,11 +240,14 @@ public data class Amount(
val format = NumberFormat.getCurrencyInstance()
format.maximumFractionDigits = spec.numFractionalNormalDigits
format.minimumFractionDigits = spec.numFractionalTrailingZeroDigits
- s.currencySymbol = spec.symbol(this)
+ s.currencySymbol = spec.symbol ?: ""
(format as DecimalFormat).decimalFormatSymbols = s
val fmt = format.format(amount)
- return if (showSymbol) fmt else {
+ return if (showSymbol) {
+ // If no symbol, then we use the currency string
+ if (spec.symbol != null) fmt else "$fmt $currency"
+ } else {
// We should do better than manually removing the symbol here
fmt.replace(s.currencySymbol, "").trim()
}
diff --git
a/taler-kotlin-android/src/main/java/net/taler/common/CurrencySpecification.kt
b/taler-kotlin-android/src/main/java/net/taler/common/CurrencySpecification.kt
index 4aa8968..02113f4 100644
---
a/taler-kotlin-android/src/main/java/net/taler/common/CurrencySpecification.kt
+++
b/taler-kotlin-android/src/main/java/net/taler/common/CurrencySpecification.kt
@@ -32,5 +32,5 @@ data class CurrencySpecification(
val altUnitNames: Map<Int, String>,
) {
// TODO: add support for alt units
- fun symbol(amount: Amount): String = altUnitNames[0] ?: amount.currency
+ val symbol: String? get() = altUnitNames[0]
}
\ No newline at end of file
diff --git a/taler-kotlin-android/src/test/java/net/taler/common/AmountTest.kt
b/taler-kotlin-android/src/test/java/net/taler/common/AmountTest.kt
index 8a92764..1ea4e70 100644
--- a/taler-kotlin-android/src/test/java/net/taler/common/AmountTest.kt
+++ b/taler-kotlin-android/src/test/java/net/taler/common/AmountTest.kt
@@ -150,6 +150,23 @@ class AmountTest {
currency = "EUR",
symbol = "€",
)
+
+ amountToString(
+ amount = Amount.fromString("NOSYMBOL", "13.24"),
+ spec = CurrencySpecification(
+ name = "No symbol!",
+ numFractionalInputDigits = 2,
+ numFractionalNormalDigits = 2,
+ numFractionalTrailingZeroDigits = 2,
+ altUnitNames = mapOf(),
+ ),
+ rawStr = "13.24",
+ fraction = 24000000,
+ specAmount = "13.24",
+ noSpecAmount = "13.24",
+ currency = "NOSYMBOL",
+ symbol = "NOSYMBOL",
+ )
}
private fun amountToString(
@@ -182,10 +199,17 @@ class AmountTest {
// The amount with currency spec
val withSpec = amount.withSpec(spec)
- assertEquals("${symbol}$specAmount", withSpec.toString(symbols =
symbols))
assertEquals(specAmount, withSpec.toString(symbols = symbols,
showSymbol = false))
- assertEquals("-${symbol}$specAmount", withSpec.toString(symbols =
symbols, negative = true))
+ assertEquals(specAmount, withSpec.toString(symbols = symbols,
showSymbol = false))
assertEquals("-$specAmount", withSpec.toString(symbols = symbols,
showSymbol = false, negative = true))
+ assertEquals("-$specAmount", withSpec.toString(symbols = symbols,
showSymbol = false, negative = true))
+ if (spec.symbol != null) {
+ assertEquals("${symbol}$specAmount", withSpec.toString(symbols =
symbols))
+ assertEquals("-${symbol}$specAmount", withSpec.toString(symbols =
symbols, negative = true))
+ } else {
+ assertEquals("$specAmount $currency", withSpec.toString(symbols =
symbols))
+ assertEquals("-$specAmount $currency", withSpec.toString(symbols =
symbols, negative = true))
+ }
}
@Test
diff --git a/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
b/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
index da7e345..0aaae93 100644
--- a/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
@@ -154,7 +154,7 @@ private fun ReceiveFundsIntro(
)
Text(
modifier = Modifier,
- text = spec?.symbol(Amount.zero(currency)) ?: currency,
+ text = spec?.symbol ?: currency,
softWrap = false,
style = MaterialTheme.typography.titleLarge,
)
diff --git a/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
b/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
index ab8fa07..c43c5f8 100644
--- a/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
@@ -138,7 +138,7 @@ private fun SendFundsIntro(
)
Text(
modifier = Modifier,
- text = spec?.symbol(Amount.zero(currency)) ?: currency,
+ text = spec?.symbol ?: currency,
softWrap = false,
style = MaterialTheme.typography.titleLarge,
)
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-android] branch master updated (39b6926 -> 4af27e7), gnunet, 2024/03/27
- [taler-taler-android] 04/15: [wallet] Balance layout improvements, gnunet, 2024/03/27
- [taler-taler-android] 05/15: [wallet] Display transactions by scopeInfo instead of currency, gnunet, 2024/03/27
- [taler-taler-android] 02/15: [wallet] DD51: enrich some tx amounts with currencySpecification, gnunet, 2024/03/27
- [taler-taler-android] 14/15: [wallet] Use Backend.json instead of Json, gnunet, 2024/03/27
- [taler-taler-android] 07/15: [wallet] Set input digits of some amount inputs, gnunet, 2024/03/27
- [taler-taler-android] 01/15: [wallet] DD51: initial rendering based on currency spec, gnunet, 2024/03/27
- [taler-taler-android] 03/15: [wallet] DD51: enrich manual withdrawal amounts with currencySpecification, gnunet, 2024/03/27
- [taler-taler-android] 15/15: [wallet] Use TransactionManager.selectedScope instead of passing around scopeInfo, gnunet, 2024/03/27
- [taler-taler-android] 08/15: [wallet] Cache currencySpec in loadBalances(), gnunet, 2024/03/27
- [taler-taler-android] 10/15: [taler-android] Improve handling of currencies with no symbol,
gnunet <=
- [taler-taler-android] 12/15: [wallet] Fix call to loadBalances() from non-UI thread, gnunet, 2024/03/27
- [taler-taler-android] 06/15: [wallet] Improve DD51 unit rendering and adapt tests accordingly, gnunet, 2024/03/27
- [taler-taler-android] 11/15: [wallet] Cache currency spec per scope info, gnunet, 2024/03/27
- [taler-taler-android] 13/15: [wallet] DD51'd more views, UX improvements and some fixes, gnunet, 2024/03/27
- [taler-taler-android] 09/15: [taler-android] Improved and refactored testToString test, gnunet, 2024/03/27