Updated on 2026-08-14

This commit is contained in:
Tangem 2026-04-06 11:40:31 +02:00
parent 2e857d5e3e
commit 45fa120411
49 changed files with 669 additions and 92 deletions

View file

@ -5,7 +5,9 @@ import com.tangem.data.search.model.TextHintDTO
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.search.model.RecentSearchToken
import com.tangem.domain.search.model.SearchTextHint
import com.tangem.domain.search.model.TokenPriceChangeDirection
import com.tangem.utils.converter.Converter
import java.math.BigDecimal
internal class TextHintDTOToSearchTextHintConverter : Converter<TextHintDTO, SearchTextHint> {
override fun convert(value: TextHintDTO): SearchTextHint {
@ -24,6 +26,15 @@ internal class RecentTokenDTOToRecentSearchTokenConverter : Converter<RecentToke
symbol = value.symbol,
imageUrl = value.imageUrl,
timestamp = value.timestamp,
appCurrencyCode = value.appCurrencyCode,
appCurrencySymbol = value.appCurrencySymbol,
price = value.pricePlain.toBigDecimalOrNull() ?: BigDecimal.ZERO,
priceChangePercent = value.priceChangePercent,
priceChangeDirection = value.priceChangeDirection.toTokenPriceChangeDirection(),
marketCap = value.marketCap,
ratingPosition = value.ratingPosition,
isUnder100kMarketCap = value.isUnder100kMarketCap,
stakingRateText = value.stakingRateText,
)
}
}
@ -36,6 +47,20 @@ internal class RecentSearchTokenToRecentTokenDTOConverter : Converter<RecentSear
symbol = value.symbol,
imageUrl = value.imageUrl,
timestamp = value.timestamp,
pricePlain = value.price.toPlainString(),
appCurrencyCode = value.appCurrencyCode,
appCurrencySymbol = value.appCurrencySymbol,
priceChangePercent = value.priceChangePercent,
priceChangeDirection = value.priceChangeDirection.name,
marketCap = value.marketCap,
ratingPosition = value.ratingPosition,
isUnder100kMarketCap = value.isUnder100kMarketCap,
stakingRateText = value.stakingRateText,
)
}
}
private fun String.toTokenPriceChangeDirection(): TokenPriceChangeDirection {
return runCatching { TokenPriceChangeDirection.valueOf(this) }
.getOrDefault(TokenPriceChangeDirection.NEUTRAL)
}

View file

@ -14,6 +14,9 @@ internal data class TextHintDTO(
val timestamp: Long,
)
/**
* @param appCurrencyCode currency code (e.g. "USD") the [pricePlain] was quoted in
*/
@JsonClass(generateAdapter = true)
internal data class RecentTokenDTO(
val id: String,
@ -21,4 +24,13 @@ internal data class RecentTokenDTO(
val symbol: String,
val imageUrl: String?,
val timestamp: Long,
val pricePlain: String,
val appCurrencyCode: String,
val appCurrencySymbol: String,
val priceChangePercent: String,
val priceChangeDirection: String,
val marketCap: String?,
val ratingPosition: String?,
val isUnder100kMarketCap: Boolean,
val stakingRateText: String?,
)