mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 04:28:35 +00:00
Fix incorrect display of ISK recurring cost.
This commit is contained in:
@@ -410,10 +410,7 @@ class DonateToSignalFragment :
|
|||||||
val isActive = state.activeLevel == subscription.level && state.isSubscriptionActive
|
val isActive = state.activeLevel == subscription.level && state.isSubscriptionActive
|
||||||
|
|
||||||
val activePrice = state.activeSubscription?.let { sub ->
|
val activePrice = state.activeSubscription?.let { sub ->
|
||||||
val activeCurrency = Currency.getInstance(sub.currency)
|
FiatMoney.fromSignalNetworkAmount(sub.amount, Currency.getInstance(sub.currency))
|
||||||
val activeAmount = sub.amount.movePointLeft(activeCurrency.defaultFractionDigits)
|
|
||||||
|
|
||||||
FiatMoney(activeAmount, activeCurrency)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
customPref(
|
customPref(
|
||||||
|
|||||||
@@ -265,12 +265,9 @@ class ManageDonationsFragment :
|
|||||||
state: ManageDonationsState
|
state: ManageDonationsState
|
||||||
) {
|
) {
|
||||||
presentSubscriptionSettingsWithState(state) {
|
presentSubscriptionSettingsWithState(state) {
|
||||||
val activeCurrency = Currency.getInstance(activeSubscription.currency)
|
|
||||||
val activeAmount = activeSubscription.amount.movePointLeft(activeCurrency.defaultFractionDigits)
|
|
||||||
|
|
||||||
customPref(
|
customPref(
|
||||||
ActiveSubscriptionPreference.Model(
|
ActiveSubscriptionPreference.Model(
|
||||||
price = FiatMoney(activeAmount, activeCurrency),
|
price = FiatMoney.fromSignalNetworkAmount(activeSubscription.amount, Currency.getInstance(activeSubscription.currency)),
|
||||||
subscription = subscription,
|
subscription = subscription,
|
||||||
renewalTimestamp = TimeUnit.SECONDS.toMillis(activeSubscription.endOfCurrentPeriod),
|
renewalTimestamp = TimeUnit.SECONDS.toMillis(activeSubscription.endOfCurrentPeriod),
|
||||||
redemptionState = state.getMonthlyDonorRedemptionState(),
|
redemptionState = state.getMonthlyDonorRedemptionState(),
|
||||||
|
|||||||
@@ -77,6 +77,18 @@ public class FiatMoney {
|
|||||||
return formatter.format(amount.multiply(multiplicand));
|
return formatter.format(amount.multiply(multiplicand));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transforms the given currency / amount pair from a signal network amount to a FiatMoney, accounting for the special
|
||||||
|
* cased multiplicands for ISK and UGX
|
||||||
|
*/
|
||||||
|
public static @NonNull FiatMoney fromSignalNetworkAmount(@NonNull BigDecimal amount, @NonNull Currency currency) {
|
||||||
|
String currencyCode = currency.getCurrencyCode();
|
||||||
|
int shift = SPECIAL_CASE_MULTIPLICANDS.contains(currencyCode) ? 2: currency.getDefaultFractionDigits();
|
||||||
|
BigDecimal shiftedAmount = amount.movePointLeft(shift);
|
||||||
|
|
||||||
|
return new FiatMoney(shiftedAmount, currency);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean equals(FiatMoney left, FiatMoney right) {
|
public static boolean equals(FiatMoney left, FiatMoney right) {
|
||||||
return Objects.equals(left.amount, right.amount) &&
|
return Objects.equals(left.amount, right.amount) &&
|
||||||
Objects.equals(left.currency, right.currency) &&
|
Objects.equals(left.currency, right.currency) &&
|
||||||
|
|||||||
Reference in New Issue
Block a user