diff options
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, ) |