Updated on 2026-08-14

This commit is contained in:
Tangem 2023-04-25 15:18:51 +08:00
parent 323458a792
commit cf6a14d262
5 changed files with 18 additions and 14 deletions

View file

@ -9,8 +9,8 @@ import kotlinx.collections.immutable.ImmutableList
*/
sealed interface TokenItemState {
/** Token name */
val name: String
/** Token full name (name with symbol) */
val fullName: String
/** Token icon url */
val iconUrl: String
@ -21,12 +21,12 @@ sealed interface TokenItemState {
/**
* Token item state that is available for read
*
* @property name token name
* @property fullName token name
* @property iconUrl token icon url
* @property networks list of networks that is available for read
*/
data class ReadContent(
override val name: String,
override val fullName: String,
override val iconUrl: String,
override val networks: ImmutableList<NetworkItemState.ReadContent>,
) : TokenItemState
@ -34,17 +34,19 @@ sealed interface TokenItemState {
/**
* Token item state that is available for read and manage
*
* @property name token name
* @property fullName token name
* @property iconUrl token icon url
* @property networks list of networks is available for read and edit
* @property id token id
* @property name token name
* @property symbol token brief name
*/
data class ManageContent(
override val name: String,
override val fullName: String,
override val iconUrl: String,
override val networks: ImmutableList<NetworkItemState.ManageContent>,
val id: String,
val name: String,
val symbol: String,
) : TokenItemState
}

View file

@ -60,7 +60,7 @@ internal fun TokenItem(model: TokenItemState) {
val spacing6 = TangemTheme.dimens.spacing6
Icon(
name = model.name,
name = model.fullName,
iconUrl = model.iconUrl,
modifier = Modifier.constrainAs(icon) {
top.linkTo(parent.top)
@ -69,7 +69,7 @@ internal fun TokenItem(model: TokenItemState) {
)
Title(
title = model.name,
title = model.fullName,
modifier = Modifier.constrainAs(title) {
top.linkTo(parent.top)
start.linkTo(icon.end, margin = spacing16)

View file

@ -15,17 +15,18 @@ object TokenListPreviewData {
fun createManageToken(): TokenItemState.ManageContent {
return TokenItemState.ManageContent(
name = "Tether (USDT)",
fullName = "Tether (USDT)",
iconUrl = "https://s3.eu-central-1.amazonaws.com/tangem.api/coins/large/tether.png",
networks = createManageNetworksList(),
id = "",
name = "Tether",
symbol = "",
)
}
fun createReadToken(): TokenItemState.ReadContent {
return TokenItemState.ReadContent(
name = "Tether (USDT)",
fullName = "Tether (USDT)",
iconUrl = "https://s3.eu-central-1.amazonaws.com/tangem.api/coins/large/tether.png",
networks = createReadNetworksList(),
)

View file

@ -113,7 +113,7 @@ private fun TokensListContent(
item { DifferentAddressesWarning() }
}
items(items = tokens, key = TokenItemState::name) {
items(items = tokens, key = TokenItemState::fullName) {
it?.let { TokenItem(model = it) }
}
}

View file

@ -126,10 +126,11 @@ internal class TokensListViewModel @Inject constructor(
private fun createManageTokenContent(token: Token): TokenItemState.ManageContent {
return TokenItemState.ManageContent(
name = getTokenName(token),
fullName = getTokenFullName(token),
iconUrl = token.iconUrl,
networks = token.networks.map(::createManageNetworkContent).toImmutableList(),
id = token.id,
name = token.name,
symbol = token.symbol,
)
}
@ -156,7 +157,7 @@ internal class TokensListViewModel @Inject constructor(
private fun createReadTokenContent(token: Token): TokenItemState.ReadContent {
return TokenItemState.ReadContent(
name = getTokenName(token),
fullName = getTokenFullName(token),
iconUrl = token.iconUrl,
networks = token.networks.map(::createReadNetworkContent).toImmutableList(),
)
@ -171,7 +172,7 @@ internal class TokensListViewModel @Inject constructor(
)
}
private fun getTokenName(token: Token) = "${token.name} (${token.symbol})"
private fun getTokenFullName(token: Token) = "${token.name} (${token.symbol})"
private fun getNetworkProtocolName(network: Network): String {
return if (network.address == null) {