diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/utils/FormatterUtils.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/utils/FormatterUtils.kt index e21fe8c0c5..73ef044814 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/utils/FormatterUtils.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/utils/FormatterUtils.kt @@ -5,8 +5,13 @@ import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.combinedReference import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.utils.BigDecimalFormatter +import com.tangem.core.ui.utils.BigDecimalFormatter.EMPTY_BALANCE_SIGN import com.tangem.domain.appcurrency.model.AppCurrency import java.math.BigDecimal +import java.math.RoundingMode + +private const val FIAT_DECIMALS = 2 +private const val FEE_MINIMUM_VALUE = 0.01 internal fun getCryptoReference(amount: Amount?, isFeeApproximate: Boolean): TextReference? { if (amount == null) return null @@ -24,11 +29,31 @@ internal fun getCryptoReference(amount: Amount?, isFeeApproximate: Boolean): Tex internal fun getFiatReference(value: BigDecimal?, rate: BigDecimal?, appCurrency: AppCurrency): TextReference? { if (value == null || rate == null) return null - return stringReference( + val formattedFiat = getFiatString(value = value, rate = rate, appCurrency = appCurrency) + return stringReference(formattedFiat) +} + +internal fun getFiatString(value: BigDecimal?, rate: BigDecimal?, appCurrency: AppCurrency): String { + if (value == null || rate == null) return EMPTY_BALANCE_SIGN + val feeValue = value.multiply(rate) + val scaled = feeValue.setScale(FIAT_DECIMALS, RoundingMode.UP) ?: BigDecimal.ZERO + val formattedValue = if (scaled < BigDecimal(FEE_MINIMUM_VALUE)) { + buildString { + append(BigDecimalFormatter.CAN_BE_LOWER_SIGN) + append( + BigDecimalFormatter.formatFiatAmount( + fiatAmount = BigDecimal(FEE_MINIMUM_VALUE), + fiatCurrencyCode = appCurrency.code, + fiatCurrencySymbol = appCurrency.symbol, + ), + ) + } + } else { BigDecimalFormatter.formatFiatAmount( - fiatAmount = value.multiply(rate), + fiatAmount = feeValue, fiatCurrencyCode = appCurrency.code, fiatCurrencySymbol = appCurrency.symbol, - ), - ) + ) + } + return formattedValue } \ No newline at end of file