From a8969b34a4bf1e927cea5abe1d8fee11062d6013 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 21 Apr 2026 13:44:54 +0000 Subject: [PATCH] Fix HUF currency formatting. --- .../model/InAppPaymentReceiptRecord.kt | 3 +-- .../org/signal/core/util/money/FiatMoney.java | 1 + .../signal/core/util/money/FiatMoneyTest.kt | 26 +++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/InAppPaymentReceiptRecord.kt b/app/src/main/java/org/thoughtcrime/securesms/database/model/InAppPaymentReceiptRecord.kt index fe509b873f..9f90c83b54 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/InAppPaymentReceiptRecord.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/InAppPaymentReceiptRecord.kt @@ -29,11 +29,10 @@ data class InAppPaymentReceiptRecord( @JvmStatic fun createForSubscription(subscription: ActiveSubscription.Subscription): InAppPaymentReceiptRecord { val activeCurrency = Currency.getInstance(subscription.currency) - val activeAmount = subscription.amount.movePointLeft(activeCurrency.defaultFractionDigits) return InAppPaymentReceiptRecord( id = -1L, - amount = FiatMoney(activeAmount, activeCurrency), + amount = FiatMoney.fromSignalNetworkAmount(subscription.amount, activeCurrency), timestamp = System.currentTimeMillis(), subscriptionLevel = subscription.level, type = if (subscription.level == SubscriptionsConfiguration.BACKUPS_LEVEL) Type.RECURRING_BACKUP else Type.RECURRING_DONATION diff --git a/core/util/src/main/java/org/signal/core/util/money/FiatMoney.java b/core/util/src/main/java/org/signal/core/util/money/FiatMoney.java index afe480f054..d96aeb0007 100644 --- a/core/util/src/main/java/org/signal/core/util/money/FiatMoney.java +++ b/core/util/src/main/java/org/signal/core/util/money/FiatMoney.java @@ -15,6 +15,7 @@ public class FiatMoney { private static final Set SPECIAL_CASE_MULTIPLICANDS = new HashSet<>() {{ add("UGX"); add("ISK"); + add("HUF"); }}; private final BigDecimal amount; diff --git a/core/util/src/test/java/org/signal/core/util/money/FiatMoneyTest.kt b/core/util/src/test/java/org/signal/core/util/money/FiatMoneyTest.kt index 06bd731936..2f1c5cab75 100644 --- a/core/util/src/test/java/org/signal/core/util/money/FiatMoneyTest.kt +++ b/core/util/src/test/java/org/signal/core/util/money/FiatMoneyTest.kt @@ -101,4 +101,30 @@ class FiatMoneyTest { // THEN assertEquals("10000", result) } + + @Test + fun given899HUF_whenIGetMinimumUnitPrecisionString_thenIExpect89900() { + // GIVEN + val fiatMoney = FiatMoney(BigDecimal.valueOf(899), Currency.getInstance("HUF")) + + // WHEN + val result = fiatMoney.minimumUnitPrecisionString + + // THEN + assertEquals("89900", result) + } + + @Test + fun given89900NetworkHUF_whenIConvertFromSignalNetworkAmount_thenIExpect899() { + // GIVEN + val amount = BigDecimal.valueOf(89900) + val currency = Currency.getInstance("HUF") + + // WHEN + val result = FiatMoney.fromSignalNetworkAmount(amount, currency) + + // THEN + assertEquals(BigDecimal.valueOf(899).setScale(2), result.amount.setScale(2)) + assertEquals(currency, result.currency) + } }