gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]