summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2024-03-14 10:11:54 -0600
committerTorsten Grote <t@grobox.de>2024-03-27 14:26:45 -0300
commit881eeabd3999c75c1961eacb2921b41d3a8f58bb (patch)
treeec00d7951705b2b2e79024d604a93e948211da13
parent5b6ba02e4e3026d08807431b144c5b3c1125266c (diff)
downloadtaler-android-881eeabd3999c75c1961eacb2921b41d3a8f58bb.tar.gz
taler-android-881eeabd3999c75c1961eacb2921b41d3a8f58bb.tar.bz2
taler-android-881eeabd3999c75c1961eacb2921b41d3a8f58bb.zip
[taler-android] Improve handling of currencies with no symbol
(cherry picked from commit c9371584fedf8783ab472d32deb35b24b0329cab)
-rw-r--r--taler-kotlin-android/src/main/java/net/taler/common/Amount.kt7
-rw-r--r--taler-kotlin-android/src/main/java/net/taler/common/CurrencySpecification.kt2
-rw-r--r--taler-kotlin-android/src/test/java/net/taler/common/AmountTest.kt28
-rw-r--r--wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt2
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,
)