Updated on 2026-08-14
This commit is contained in:
parent
7e3556f0df
commit
46b69881f9
3 changed files with 18 additions and 11 deletions
|
|
@ -4,6 +4,7 @@ import com.tangem.datasource.api.markets.models.response.TokenMarketInfoResponse
|
|||
import com.tangem.domain.markets.TokenMarketInfo
|
||||
import com.tangem.domain.markets.TokenQuotes
|
||||
import com.tangem.utils.converter.Converter
|
||||
import java.math.BigDecimal
|
||||
|
||||
internal object TokenMarketInfoConverter : Converter<TokenMarketInfoResponse, TokenMarketInfo> {
|
||||
|
||||
|
|
@ -28,16 +29,22 @@ internal object TokenMarketInfoConverter : Converter<TokenMarketInfoResponse, To
|
|||
private fun TokenMarketInfoResponse.getQuotes(): TokenQuotes {
|
||||
return TokenQuotes(
|
||||
currentPrice = currentPrice,
|
||||
h24ChangePercent = priceChangePercentage?.day?.movePointLeft(2),
|
||||
weekChangePercent = priceChangePercentage?.week?.movePointLeft(2),
|
||||
monthChangePercent = priceChangePercentage?.month?.movePointLeft(2),
|
||||
m3ChangePercent = priceChangePercentage?.threeMonths?.movePointLeft(2),
|
||||
m6ChangePercent = priceChangePercentage?.sixMonths?.movePointLeft(2),
|
||||
yearChangePercent = priceChangePercentage?.year?.movePointLeft(2),
|
||||
allTimeChangePercent = priceChangePercentage?.allTime?.movePointLeft(2),
|
||||
h24ChangePercent = priceChangePercentage?.getPercentageByInterval { day },
|
||||
weekChangePercent = priceChangePercentage?.getPercentageByInterval { week },
|
||||
monthChangePercent = priceChangePercentage?.getPercentageByInterval { month },
|
||||
m3ChangePercent = priceChangePercentage?.getPercentageByInterval { threeMonths },
|
||||
m6ChangePercent = priceChangePercentage?.getPercentageByInterval { sixMonths },
|
||||
yearChangePercent = priceChangePercentage?.getPercentageByInterval { year },
|
||||
allTimeChangePercent = priceChangePercentage?.getPercentageByInterval { allTime },
|
||||
)
|
||||
}
|
||||
|
||||
private fun TokenMarketInfoResponse.PriceChangePercentage.getPercentageByInterval(
|
||||
intervalProvider: TokenMarketInfoResponse.PriceChangePercentage.() -> BigDecimal?,
|
||||
): BigDecimal? {
|
||||
return (intervalProvider() ?: allTime)?.movePointLeft(2)
|
||||
}
|
||||
|
||||
@JvmName("convertNetwork")
|
||||
private fun List<TokenMarketInfoResponse.Network>.convert(): List<TokenMarketInfo.Network> {
|
||||
return map {
|
||||
|
|
|
|||
|
|
@ -112,10 +112,10 @@ internal class MetricsConverter(
|
|||
}
|
||||
|
||||
private fun BigDecimal?.formatAmount(crypto: Boolean = false): String {
|
||||
if (this == null) return StringsSigns.DASH_SIGN
|
||||
|
||||
return if (crypto) {
|
||||
BigDecimalFormatter.formatCompactAmount(
|
||||
amount = this ?: BigDecimal.ZERO,
|
||||
)
|
||||
BigDecimalFormatter.formatCompactAmount(amount = this)
|
||||
} else {
|
||||
val currency = appCurrency()
|
||||
BigDecimalFormatter.formatCompactFiatAmount(
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ internal class PricePerformanceConverter(
|
|||
}
|
||||
|
||||
private fun TokenMarketInfo.Range?.convert(currentPrice: BigDecimal): PricePerformanceUM.Value {
|
||||
if (this == null) {
|
||||
if (this == null || this.low == null || this.high == null) {
|
||||
return PricePerformanceUM.Value(
|
||||
low = StringsSigns.DASH_SIGN,
|
||||
high = StringsSigns.DASH_SIGN,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue