Updated on 2026-08-14

This commit is contained in:
Tangem 2024-10-18 12:20:15 +03:00
parent 3183f5b955
commit 7ca9946f47
53 changed files with 355 additions and 462 deletions

View file

@ -4,7 +4,8 @@ import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.plus
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.wrappedList
import com.tangem.core.ui.utils.BigDecimalFormatter
import com.tangem.core.ui.format.bigdecimal.crypto
import com.tangem.core.ui.format.bigdecimal.format
import com.tangem.domain.common.util.cardTypesResolver
import com.tangem.domain.common.util.getCardsCount
import com.tangem.domain.wallets.models.UserWallet
@ -97,13 +98,7 @@ internal object WalletAdditionalInfoFactory {
WalletAdditionalInfo(hideable = false, content = TextReference.Res(R.string.common_locked))
} else {
val blockchain = scanResponse.cardTypesResolver.getBlockchain()
val amount = currencyAmount?.let {
BigDecimalFormatter.formatCryptoAmount(
cryptoAmount = it,
cryptoCurrency = blockchain.currency,
decimals = blockchain.decimals(),
)
}
val amount = currencyAmount?.format { crypto(blockchain.currency, blockchain.decimals()) }
WalletAdditionalInfo(hideable = true, content = TextReference.Str(value = amount.orEmpty()))
}

View file

@ -3,6 +3,8 @@ package com.tangem.feature.wallet.presentation.wallet.state.transformers
import arrow.core.Either
import arrow.core.getOrElse
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.format.bigdecimal.crypto
import com.tangem.core.ui.format.bigdecimal.format
import com.tangem.core.ui.utils.BigDecimalFormatter
import com.tangem.domain.common.util.getCardsCount
import com.tangem.domain.visa.model.VisaCurrency
@ -41,11 +43,9 @@ internal class SetBalancesAndLimitsTransformer(
}
private fun getContentBlockState(visaCurrency: VisaCurrency) = BalancesAndLimitsBlockState.Content(
availableBalance = BigDecimalFormatter.formatCryptoAmount(
visaCurrency.limits.remainingOtp,
visaCurrency.symbol,
visaCurrency.decimals,
),
availableBalance = visaCurrency.limits.remainingOtp.format {
crypto(visaCurrency.symbol, visaCurrency.decimals)
},
limitDays = Days.daysBetween(DateTime.now(), visaCurrency.limits.expirationDate).days.inc(),
isEnabled = true,
onClick = clickIntents::onBalancesAndLimitsClick,
@ -72,11 +72,9 @@ internal class SetBalancesAndLimitsTransformer(
imageResId = imageResId,
onRenameClick = onRenameClick,
onDeleteClick = onDeleteClick,
balance = BigDecimalFormatter.formatCryptoAmount(
visaCurrency.balances.available,
visaCurrency.symbol,
visaCurrency.decimals,
),
balance = visaCurrency.balances.available.format {
crypto(visaCurrency.symbol, visaCurrency.decimals)
},
cardCount = userWallet.getCardsCount(),
)
}

View file

@ -1,6 +1,7 @@
package com.tangem.feature.wallet.presentation.wallet.state.transformers.converter
import com.tangem.core.ui.utils.BigDecimalFormatter
import com.tangem.core.ui.format.bigdecimal.crypto
import com.tangem.core.ui.format.bigdecimal.format
import com.tangem.core.ui.utils.DateTimeFormatters
import com.tangem.domain.visa.model.VisaCurrency
import com.tangem.feature.wallet.presentation.wallet.state.model.BalancesAndLimitsBottomSheetConfig
@ -15,11 +16,7 @@ internal class BalancesAndLimitsBottomSheetConverter(
) : Converter<VisaCurrency, BalancesAndLimitsBottomSheetConfig> {
override fun convert(value: VisaCurrency): BalancesAndLimitsBottomSheetConfig {
fun formatAmount(amount: BigDecimal): String = BigDecimalFormatter.formatCryptoAmount(
amount,
cryptoCurrency = value.symbol,
decimals = value.decimals,
)
fun formatAmount(amount: BigDecimal): String = amount.format { crypto(value.symbol, value.decimals) }
val otpLimit = value.limits.remainingOtp.let(::formatAmount)
val noOtpLimit = value.limits.remainingNoOtp.let(::formatAmount)

View file

@ -4,6 +4,8 @@ import com.tangem.core.ui.components.marketprice.MarketPriceBlockState
import com.tangem.core.ui.components.marketprice.PriceChangeState
import com.tangem.core.ui.components.marketprice.PriceChangeType
import com.tangem.core.ui.components.marketprice.utils.PriceChangeConverter
import com.tangem.core.ui.format.bigdecimal.format
import com.tangem.core.ui.format.bigdecimal.percent
import com.tangem.core.ui.utils.BigDecimalFormatter
import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
@ -57,7 +59,7 @@ internal class SingleWalletMarketPriceConverter(
private fun formatPriceChange(status: CryptoCurrencyStatus.Value): String {
val priceChange = status.priceChange ?: return BigDecimalFormatter.EMPTY_BALANCE_SIGN
return BigDecimalFormatter.formatPercent(percent = priceChange, useAbsoluteValue = true)
return priceChange.format { percent() }
}
private fun getPriceChangeType(status: CryptoCurrencyStatus.Value): PriceChangeType {

View file

@ -6,6 +6,8 @@ import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.wrappedList
import com.tangem.core.ui.format.bigdecimal.crypto
import com.tangem.core.ui.format.bigdecimal.format
import com.tangem.core.ui.utils.toTimeFormat
import com.tangem.domain.txhistory.models.TxHistoryItem
import com.tangem.domain.txhistory.models.TxHistoryItem.*
@ -15,7 +17,6 @@ import com.tangem.utils.StringsSigns.MINUS
import com.tangem.utils.StringsSigns.PLUS
import com.tangem.utils.converter.Converter
import com.tangem.utils.toBriefAddressFormat
import com.tangem.utils.toFormattedCurrencyString
internal class TxHistoryItemStateConverter(
private val symbol: String,
@ -129,6 +130,6 @@ internal class TxHistoryItemStateConverter(
this.amount.isZero() -> ""
else -> if (isOutgoing) MINUS else PLUS
}
return prefix + amount.toFormattedCurrencyString(currency = symbol, decimals = decimals)
return prefix + amount.format { crypto(symbol = symbol, decimals = decimals) }
}
}

View file

@ -1,6 +1,8 @@
package com.tangem.feature.wallet.presentation.wallet.state.transformers.converter
import com.tangem.core.ui.extensions.capitalize
import com.tangem.core.ui.format.bigdecimal.crypto
import com.tangem.core.ui.format.bigdecimal.format
import com.tangem.core.ui.utils.BigDecimalFormatter
import com.tangem.core.ui.utils.DateTimeFormatters
import com.tangem.domain.visa.model.VisaCurrency
@ -66,11 +68,7 @@ internal class VisaTxDetailsBottomSheetConverter(
}
private fun formatNetworkAmount(amount: BigDecimal): String {
return BigDecimalFormatter.formatCryptoAmount(
cryptoAmount = amount,
cryptoCurrency = visaCurrency.symbol,
decimals = visaCurrency.decimals,
)
return amount.format { crypto(visaCurrency.symbol, visaCurrency.decimals) }
}
private fun formatFiatAmount(amount: BigDecimal, fiatCurrency: Currency): String {

View file

@ -3,6 +3,8 @@ package com.tangem.feature.wallet.presentation.wallet.state.transformers.convert
import com.tangem.core.ui.components.transactions.state.TransactionState
import com.tangem.core.ui.extensions.capitalize
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.format.bigdecimal.crypto
import com.tangem.core.ui.format.bigdecimal.format
import com.tangem.core.ui.utils.BigDecimalFormatter
import com.tangem.core.ui.utils.DateTimeFormatters
import com.tangem.domain.visa.model.VisaCurrency
@ -25,11 +27,7 @@ internal class VisaTxHistoryItemStateConverter(
return TransactionState.Content(
txHash = value.id,
amount = BigDecimalFormatter.formatCryptoAmount(
cryptoAmount = value.amount,
cryptoCurrency = visaCurrency.symbol,
decimals = visaCurrency.decimals,
),
amount = value.amount.format { crypto(visaCurrency.symbol, visaCurrency.decimals) },
// Show tx fiat amount instead of tx time
time = BigDecimalFormatter.formatFiatAmount(
fiatAmount = value.fiatAmount,