Updated on 2026-08-14

This commit is contained in:
Tangem 2026-01-23 16:10:27 +05:00
parent d4c932d3c3
commit 5db8900311
40 changed files with 198 additions and 88 deletions

View file

@ -6,6 +6,7 @@ import com.tangem.common.ui.R
import com.tangem.core.ui.components.account.AccountCharIcon import com.tangem.core.ui.components.account.AccountCharIcon
import com.tangem.core.ui.components.account.AccountIconSize import com.tangem.core.ui.components.account.AccountIconSize
import com.tangem.core.ui.components.account.AccountResIcon import com.tangem.core.ui.components.account.AccountResIcon
import com.tangem.core.ui.components.account.PaymentAccountIcon
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.extensions.resolveReference
import com.tangem.domain.models.account.CryptoPortfolioIcon import com.tangem.domain.models.account.CryptoPortfolioIcon
@ -16,7 +17,7 @@ import com.tangem.domain.models.account.CryptoPortfolioIcon.Color
* - a single character (derived from the [name]) using [AccountCharIcon], or * - a single character (derived from the [name]) using [AccountCharIcon], or
* - a predefined vector resource (from [icon]) using [AccountResIcon]. * - a predefined vector resource (from [icon]) using [AccountResIcon].
* *
* The background color is taken from [CryptoPortfolioIconUM.color], * The background color is taken from [AccountIconUM.CryptoPortfolio.color],
* and the icon size, text style, and container shape are adapted based on the given [size]. * and the icon size, text style, and container shape are adapted based on the given [size].
* *
* @param name A [TextReference] used to resolve and display the first letter * @param name A [TextReference] used to resolve and display the first letter
@ -31,29 +32,43 @@ import com.tangem.domain.models.account.CryptoPortfolioIcon.Color
@Composable @Composable
fun AccountIcon( fun AccountIcon(
name: TextReference, name: TextReference,
icon: CryptoPortfolioIconUM, icon: AccountIconUM.CryptoPortfolio,
size: AccountIconSize, size: AccountIconSize,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val letter = name.resolveReference().firstOrNull() val letter = name.resolveReference().firstOrNull()
val iconColor = icon.color.getUiColor()
when { when {
icon.value == CryptoPortfolioIcon.Icon.Letter && letter == null -> { icon.value == CryptoPortfolioIcon.Icon.Letter && letter == null -> {
AccountResIcon( AccountResIcon(
resId = R.drawable.ic_tangem_24, resId = R.drawable.ic_tangem_24,
color = icon.color.getUiColor(), color = iconColor,
size = size, size = size,
modifier = modifier, modifier = modifier,
) )
} }
icon.value == CryptoPortfolioIcon.Icon.Letter -> AccountCharIcon( icon.value == CryptoPortfolioIcon.Icon.Letter -> AccountCharIcon(
char = letter ?: 'N', char = letter ?: 'N',
color = icon.color.getUiColor(), color = iconColor,
size = size, size = size,
modifier = modifier, modifier = modifier,
) )
else -> AccountResIcon( else -> AccountResIcon(
resId = icon.value.getResId(), resId = icon.value.getResId(),
color = icon.color.getUiColor(), color = iconColor,
size = size,
modifier = modifier,
)
}
}
@Composable
fun AccountIcon(name: TextReference, icon: AccountIconUM, size: AccountIconSize, modifier: Modifier = Modifier) {
when (icon) {
is AccountIconUM.Payment -> PaymentAccountIcon(size = size, modifier = modifier)
is AccountIconUM.CryptoPortfolio -> AccountIcon(
name = name,
icon = icon,
size = size, size = size,
modifier = modifier, modifier = modifier,
) )
@ -62,7 +77,7 @@ fun AccountIcon(
object AccountIconPreviewData { object AccountIconPreviewData {
fun randomAccountIcon(letter: Boolean = false) = CryptoPortfolioIconUM( fun randomAccountIcon(letter: Boolean = false) = AccountIconUM.CryptoPortfolio(
value = if (letter) CryptoPortfolioIcon.Icon.Letter else CryptoPortfolioIcon.Icon.entries.random(), value = if (letter) CryptoPortfolioIcon.Icon.Letter else CryptoPortfolioIcon.Icon.entries.random(),
color = Color.entries.random(), color = Color.entries.random(),
) )

View file

@ -0,0 +1,10 @@
package com.tangem.common.ui.account
import com.tangem.domain.models.account.CryptoPortfolioIcon.Color
import com.tangem.domain.models.account.CryptoPortfolioIcon.Icon
sealed class AccountIconUM {
data class CryptoPortfolio(val value: Icon, val color: Color) : AccountIconUM()
data object Payment : AccountIconUM()
}

View file

@ -27,7 +27,7 @@ import com.tangem.core.ui.res.TangemTheme
@Composable @Composable
fun AccountLabel( fun AccountLabel(
name: TextReference, name: TextReference,
icon: CryptoPortfolioIconUM, icon: AccountIconUM,
iconSize: AccountIconSize, iconSize: AccountIconSize,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
nameStyle: TextStyle = TangemTheme.typography.subtitle2, nameStyle: TextStyle = TangemTheme.typography.subtitle2,

View file

@ -53,7 +53,7 @@ class AccountPortfolioItemUMConverter(
private fun getImageState(account: Account.CryptoPortfolio) = when (account) { private fun getImageState(account: Account.CryptoPortfolio) = when (account) {
is Account.CryptoPortfolio -> UserWalletItemUM.ImageState.Account( is Account.CryptoPortfolio -> UserWalletItemUM.ImageState.Account(
name = account.accountName.toUM().value, name = account.accountName.toUM().value,
icon = account.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(account.icon),
) )
} }

View file

@ -41,7 +41,7 @@ import com.tangem.core.ui.res.TangemThemePreview
fun AccountRow( fun AccountRow(
title: TextReference, title: TextReference,
subtitle: TextReference, subtitle: TextReference,
icon: CryptoPortfolioIconUM, icon: AccountIconUM.CryptoPortfolio,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
isReverse: Boolean = false, isReverse: Boolean = false,
) { ) {

View file

@ -1,7 +1,9 @@
package com.tangem.common.ui.account package com.tangem.common.ui.account
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -9,11 +11,16 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag import androidx.compose.ui.platform.testTag
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.tangem.core.ui.components.account.AccountIconSize import com.tangem.core.ui.components.account.AccountIconSize
import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.test.SendScreenTestTags import com.tangem.core.ui.test.SendScreenTestTags
import com.tangem.domain.models.account.CryptoPortfolioIcon
import com.tangem.utils.StringsSigns
/** /**
* A composable function that displays an account label (icon + name) with an optional prefix. * A composable function that displays an account label (icon + name) with an optional prefix.
@ -61,4 +68,28 @@ fun AccountTitle(
) )
} }
} }
}
@Preview
@Composable
private fun PreviewAccountTitle() {
TangemThemePreview {
Column {
AccountTitle(
accountTitleUM = AccountTitleUM.Account(
prefixText = stringReference(StringsSigns.DOT),
name = stringReference("Main Wallet"),
icon = AccountIconUM.CryptoPortfolio(
value = CryptoPortfolioIcon.Icon.Bookmark,
color = CryptoPortfolioIcon.Color.Pattypan,
),
),
modifier = Modifier.padding(4.dp),
)
AccountTitle(
accountTitleUM = AccountTitleUM.Account.payment(prefixText = stringReference(StringsSigns.DOT)),
modifier = Modifier.padding(4.dp),
)
}
}
} }

View file

@ -1,7 +1,9 @@
package com.tangem.common.ui.account package com.tangem.common.ui.account
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import com.tangem.common.ui.R
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
/** /**
* A sealed interface representing the title of an account, which can be either a simple text * A sealed interface representing the title of an account, which can be either a simple text
@ -19,6 +21,16 @@ sealed interface AccountTitleUM {
data class Account( data class Account(
val prefixText: TextReference, val prefixText: TextReference,
val name: TextReference, val name: TextReference,
val icon: CryptoPortfolioIconUM, val icon: AccountIconUM,
) : AccountTitleUM ) : AccountTitleUM {
companion object {
fun payment(prefixText: TextReference = TextReference.EMPTY): Account {
return Account(
prefixText = prefixText,
name = resourceReference(R.string.tangempay_payment_account),
icon = AccountIconUM.Payment,
)
}
}
}
} }

View file

@ -0,0 +1,14 @@
package com.tangem.common.ui.account
import com.tangem.domain.models.account.CryptoPortfolioIcon
import com.tangem.utils.converter.TwoWayConverter
object CryptoPortfolioIconConverter : TwoWayConverter<CryptoPortfolioIcon, AccountIconUM.CryptoPortfolio> {
override fun convert(value: CryptoPortfolioIcon): AccountIconUM.CryptoPortfolio {
return AccountIconUM.CryptoPortfolio(value = value.value, color = value.color)
}
override fun convertBack(value: AccountIconUM.CryptoPortfolio): CryptoPortfolioIcon {
return CryptoPortfolioIcon.ofCustomAccount(value = value.value, color = value.color)
}
}

View file

@ -47,7 +47,4 @@ fun CryptoPortfolioIcon.Icon.getResId(): Int {
CryptoPortfolioIcon.Icon.Package -> R.drawable.ic_package_24 CryptoPortfolioIcon.Icon.Package -> R.drawable.ic_package_24
CryptoPortfolioIcon.Icon.Gift -> R.drawable.ic_gift_24 CryptoPortfolioIcon.Icon.Gift -> R.drawable.ic_gift_24
} }
} }
fun CryptoPortfolioIcon.toUM() = CryptoPortfolioIconUM(domainModel = this)
fun CryptoPortfolioIconUM.toDomain() = CryptoPortfolioIcon.ofCustomAccount(value = this.value, color = this.color)

View file

@ -1,15 +0,0 @@
package com.tangem.common.ui.account
import com.tangem.domain.models.account.CryptoPortfolioIcon
import com.tangem.domain.models.account.CryptoPortfolioIcon.Color
import com.tangem.domain.models.account.CryptoPortfolioIcon.Icon
data class CryptoPortfolioIconUM(
val value: Icon,
val color: Color,
) {
constructor(domainModel: CryptoPortfolioIcon) : this(
value = domainModel.value,
color = domainModel.color,
)
}

View file

@ -82,7 +82,7 @@ fun PortfolioSelectRow(
@Immutable @Immutable
data class PortfolioSelectUM( data class PortfolioSelectUM(
val icon: CryptoPortfolioIconUM?, val icon: AccountIconUM.CryptoPortfolio?,
val name: TextReference, val name: TextReference,
val isAccountMode: Boolean, val isAccountMode: Boolean,
val isMultiChoice: Boolean, val isMultiChoice: Boolean,

View file

@ -1,6 +1,7 @@
package com.tangem.common.ui.amountScreen.converters package com.tangem.common.ui.amountScreen.converters
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import com.tangem.domain.models.account.Account import com.tangem.domain.models.account.Account
@ -15,7 +16,7 @@ class AmountAccountConverter(
return if (value != null && isAccountsMode) { return if (value != null && isAccountsMode) {
AccountTitleUM.Account( AccountTitleUM.Account(
name = value.accountName.toUM().value, name = value.accountName.toUM().value,
icon = value.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(value.icon),
prefixText = prefixText, prefixText = prefixText,
) )
} else { } else {

View file

@ -5,7 +5,7 @@ import androidx.compose.foundation.text.KeyboardOptions
import com.tangem.common.ui.R import com.tangem.common.ui.R
import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountNameUM
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.amountScreen.models.AmountFieldModel import com.tangem.common.ui.amountScreen.models.AmountFieldModel
import com.tangem.common.ui.amountScreen.models.AmountState import com.tangem.common.ui.amountScreen.models.AmountState
import com.tangem.core.ui.components.currency.icon.CurrencyIconState import com.tangem.core.ui.components.currency.icon.CurrencyIconState
@ -88,7 +88,7 @@ object AmountStatePreviewData {
val amountStateV2Accounts = amountState.copy( val amountStateV2Accounts = amountState.copy(
accountTitleUM = AccountTitleUM.Account( accountTitleUM = AccountTitleUM.Account(
name = AccountNameUM.DefaultMain.value, name = AccountNameUM.DefaultMain.value,
icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()),
prefixText = resourceReference(R.string.common_from), prefixText = resourceReference(R.string.common_from),
), ),
availableBalanceCrypto = stringReference("2 130,81231238 USDT"), availableBalanceCrypto = stringReference("2 130,81231238 USDT"),

View file

@ -1,6 +1,6 @@
package com.tangem.common.ui.userwallet.state package com.tangem.common.ui.userwallet.state
import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.common.ui.account.AccountIconUM
import com.tangem.core.ui.components.artwork.ArtworkUM import com.tangem.core.ui.components.artwork.ArtworkUM
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import javax.annotation.concurrent.Immutable import javax.annotation.concurrent.Immutable
@ -64,7 +64,7 @@ data class UserWalletItemUM(
data class Account( data class Account(
val name: TextReference, val name: TextReference,
val icon: CryptoPortfolioIconUM, val icon: AccountIconUM.CryptoPortfolio,
) : ImageState() ) : ImageState()
data class Image( data class Image(

View file

@ -6,22 +6,20 @@ import androidx.compose.animation.animateContentSize
import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateDpAsState
import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.foundation.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.*
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.vectorResource import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
@ -76,6 +74,33 @@ fun AccountResIcon(@DrawableRes resId: Int, color: Color, size: AccountIconSize,
} }
} }
/**
* Displays a PaymentAccount icon using a predefined painter resource.
*
* The icon size is adapted based on the provided [size].
*
* @param size The size of the icon, defined by [AccountIconSize].
*/
@Composable
fun PaymentAccountIcon(size: AccountIconSize, modifier: Modifier = Modifier) {
val boxSize by animateDpAsState(
targetValue = size.boxSizeInDp(),
animationSpec = animation(),
)
val boxShapeCornerSize by animateDpAsState(
targetValue = size.boxShapeSizeInDp(),
animationSpec = animation(),
)
Box(
contentAlignment = Alignment.Center,
modifier = modifier
.size(boxSize)
.clip(RoundedCornerShape(boxShapeCornerSize)),
) {
Image(painter = painterResource(id = R.drawable.img_visa_36), contentDescription = null)
}
}
/** /**
* Displays a portfolio icon using a single character. * Displays a portfolio icon using a single character.
* *
@ -186,6 +211,7 @@ private fun Sample() {
AccountResIcon(resId = R.drawable.ic_user_24, color = Color.Magenta, size = AccountIconSize.Medium) AccountResIcon(resId = R.drawable.ic_user_24, color = Color.Magenta, size = AccountIconSize.Medium)
AccountResIcon(resId = R.drawable.ic_family_24, color = Color.DarkGray, size = AccountIconSize.Small) AccountResIcon(resId = R.drawable.ic_family_24, color = Color.DarkGray, size = AccountIconSize.Small)
AccountResIcon(resId = R.drawable.ic_wallet_24, color = Color.Green, size = AccountIconSize.ExtraSmall) AccountResIcon(resId = R.drawable.ic_wallet_24, color = Color.Green, size = AccountIconSize.ExtraSmall)
PaymentAccountIcon(size = AccountIconSize.Default)
} }
Column(verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing8)) { Column(verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing8)) {
AccountCharIcon(char = 'D', color = Color.Red, size = sizeState) AccountCharIcon(char = 'D', color = Color.Red, size = sizeState)

View file

@ -1,7 +1,7 @@
package com.tangem.features.account.archived.entity package com.tangem.features.account.archived.entity
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.common.ui.account.AccountIconUM
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
@ -23,7 +23,7 @@ internal sealed interface AccountArchivedUM {
internal data class ArchivedAccountUM( internal data class ArchivedAccountUM(
val accountId: String, val accountId: String,
val accountName: TextReference, val accountName: TextReference,
val accountIconUM: CryptoPortfolioIconUM, val accountIconUM: AccountIconUM.CryptoPortfolio,
val tokensInfo: TextReference, val tokensInfo: TextReference,
val networksInfo: TextReference, val networksInfo: TextReference,
val isLoading: Boolean, val isLoading: Boolean,

View file

@ -1,5 +1,6 @@
package com.tangem.features.account.archived.entity package com.tangem.features.account.archived.entity
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.res.R import com.tangem.core.res.R
import com.tangem.core.ui.extensions.pluralReference import com.tangem.core.ui.extensions.pluralReference
@ -28,7 +29,7 @@ internal class AccountArchivedUMBuilder @Inject constructor() {
ArchivedAccountUM( ArchivedAccountUM(
accountId = accountId.value, accountId = accountId.value,
accountName = name.toUM().value, accountName = name.toUM().value,
accountIconUM = icon.toUM(), accountIconUM = CryptoPortfolioIconConverter.convert(icon),
isLoading = false, isLoading = false,
tokensInfo = pluralReference( tokensInfo = pluralReference(
R.plurals.common_tokens_count, R.plurals.common_tokens_count,

View file

@ -2,6 +2,7 @@ package com.tangem.features.account.createedit
import androidx.annotation.StringRes import androidx.annotation.StringRes
import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountNameUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toDomain import com.tangem.common.ui.account.toDomain
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.api.AnalyticsEventHandler
@ -109,7 +110,7 @@ internal class AccountCreateEditModel @Inject constructor(
private suspend fun createNewCryptoPortfolio(params: AccountCreateEditComponent.Params.Create) { private suspend fun createNewCryptoPortfolio(params: AccountCreateEditComponent.Params.Create) {
val state = uiState.value val state = uiState.value
val name = state.account.name.toDomain().getOrNull() ?: return val name = state.account.name.toDomain().getOrNull() ?: return
val icon = state.account.portfolioIcon.toDomain() val icon = CryptoPortfolioIconConverter.convertBack(state.account.portfolioIcon)
val index = state.account.derivationInfo.index ?: return val index = state.account.derivationInfo.index ?: return
val derivationIndex = DerivationIndex(value = index).getOrNull() ?: return val derivationIndex = DerivationIndex(value = index).getOrNull() ?: return
val event = AccountSettingsAnalyticEvents.ButtonAddNewAccount( val event = AccountSettingsAnalyticEvents.ButtonAddNewAccount(
@ -161,7 +162,7 @@ internal class AccountCreateEditModel @Inject constructor(
private suspend fun editCryptoPortfolio(params: AccountCreateEditComponent.Params.Edit) { private suspend fun editCryptoPortfolio(params: AccountCreateEditComponent.Params.Edit) {
val state = uiState.value val state = uiState.value
val name = state.account.name.toDomain().getOrNull() ?: return val name = state.account.name.toDomain().getOrNull() ?: return
val icon = state.account.portfolioIcon.toDomain() val icon = CryptoPortfolioIconConverter.convertBack(state.account.portfolioIcon)
val isNewName = name != params.account.accountName val isNewName = name != params.account.accountName
val isNewIcon = icon != params.account.portfolioIcon val isNewIcon = icon != params.account.portfolioIcon
analyticsEventHandler.send(AccountSettingsAnalyticEvents.ButtonSave(name, icon)) analyticsEventHandler.send(AccountSettingsAnalyticEvents.ButtonSave(name, icon))
@ -246,9 +247,10 @@ internal class AccountCreateEditModel @Inject constructor(
is AccountCreateEditComponent.Params.Create -> isValidName is AccountCreateEditComponent.Params.Create -> isValidName
is AccountCreateEditComponent.Params.Edit -> { is AccountCreateEditComponent.Params.Edit -> {
val oldName = params.account.accountName.toUM() val oldName = params.account.accountName.toUM()
val oldIcon = CryptoPortfolioIconConverter.convert(params.account.portfolioIcon)
val isNewName = this.account.name.trim() != oldName val isNewName = this.account.name.trim() != oldName
val isNewIcon = this.account.portfolioIcon != params.account.portfolioIcon.toUM() val isNewIcon = this.account.portfolioIcon != oldIcon
isValidName && (isNewName || isNewIcon) isValidName && (isNewName || isNewIcon)
} }
} }

View file

@ -1,8 +1,8 @@
package com.tangem.features.account.createedit.entity package com.tangem.features.account.createedit.entity
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import com.tangem.common.ui.account.AccountIconUM
import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountNameUM
import com.tangem.common.ui.account.CryptoPortfolioIconUM
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import com.tangem.domain.models.account.CryptoPortfolioIcon import com.tangem.domain.models.account.CryptoPortfolioIcon
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
@ -18,7 +18,7 @@ internal data class AccountCreateEditUM(
data class Account( data class Account(
val name: AccountNameUM, val name: AccountNameUM,
val portfolioIcon: CryptoPortfolioIconUM, val portfolioIcon: AccountIconUM.CryptoPortfolio,
val derivationInfo: DerivationInfo, val derivationInfo: DerivationInfo,
val inputPlaceholder: TextReference, val inputPlaceholder: TextReference,
val onNameChange: (AccountNameUM) -> Unit, val onNameChange: (AccountNameUM) -> Unit,

View file

@ -1,6 +1,7 @@
package com.tangem.features.account.createedit.entity package com.tangem.features.account.createedit.entity
import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountNameUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.res.R import com.tangem.core.res.R
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
@ -17,7 +18,7 @@ internal class AccountCreateEditUMBuilder(
private val accountColors = CryptoPortfolioIcon.Color.entries.toImmutableList() private val accountColors = CryptoPortfolioIcon.Color.entries.toImmutableList()
private val accountIcons = CryptoPortfolioIcon.Icon.entries.toImmutableList() private val accountIcons = CryptoPortfolioIcon.Icon.entries.toImmutableList()
private val createIcon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM() private val createIcon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount())
val toolbarTitle: TextReference val toolbarTitle: TextReference
get() = when (params) { get() = when (params) {
@ -36,7 +37,7 @@ internal class AccountCreateEditUMBuilder(
) )
is AccountCreateEditComponent.Params.Edit -> AccountCreateEditUM.Account( is AccountCreateEditComponent.Params.Edit -> AccountCreateEditUM.Account(
name = params.account.accountName.toUM(), name = params.account.accountName.toUM(),
portfolioIcon = params.account.portfolioIcon.toUM(), portfolioIcon = CryptoPortfolioIconConverter.convert(params.account.portfolioIcon),
derivationInfo = createAccountDerivationInfo( derivationInfo = createAccountDerivationInfo(
index = (params.account as Account.CryptoPortfolio).derivationIndex.value, index = (params.account as Account.CryptoPortfolio).derivationIndex.value,
), ),

View file

@ -1,6 +1,7 @@
package com.tangem.features.account.details package com.tangem.features.account.details
import com.tangem.common.routing.AppRoute import com.tangem.common.routing.AppRoute
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.di.ModelScoped
@ -159,7 +160,7 @@ internal class AccountDetailsModel @Inject constructor(
?.isMultiCurrency == true ?.isMultiCurrency == true
return AccountDetailsUM( return AccountDetailsUM(
accountName = account.accountName.toUM().value, accountName = account.accountName.toUM().value,
accountIcon = account.portfolioIcon.toUM(), accountIcon = CryptoPortfolioIconConverter.convert(account.portfolioIcon),
onCloseClick = { router.pop() }, onCloseClick = { router.pop() },
onAccountEditClick = { onEditAccountClick(account) }, onAccountEditClick = { onEditAccountClick(account) },
onManageTokensClick = { onManageTokensClick(account) }, onManageTokensClick = { onManageTokensClick(account) },

View file

@ -1,12 +1,12 @@
package com.tangem.features.account.details.entity package com.tangem.features.account.details.entity
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.common.ui.account.AccountIconUM
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
internal data class AccountDetailsUM( internal data class AccountDetailsUM(
val accountName: TextReference, val accountName: TextReference,
val accountIcon: CryptoPortfolioIconUM, val accountIcon: AccountIconUM.CryptoPortfolio,
val archiveMode: ArchiveMode, val archiveMode: ArchiveMode,
val isManageTokensAvailable: Boolean, val isManageTokensAvailable: Boolean,
val onCloseClick: () -> Unit, val onCloseClick: () -> Unit,

View file

@ -1,6 +1,7 @@
package com.tangem.features.feed.components.market.details.portfolio.add.impl.model package com.tangem.features.feed.components.market.details.portfolio.add.impl.model
import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.common.ui.account.AccountIconUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.PortfolioSelectUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.common.ui.addtoken.AddTokenUM import com.tangem.common.ui.addtoken.AddTokenUM
@ -35,7 +36,7 @@ internal class AddTokenUiBuilder @Inject constructor(
} }
private fun createPortfolio(selectedPortfolio: SelectedPortfolio): PortfolioSelectUM { private fun createPortfolio(selectedPortfolio: SelectedPortfolio): PortfolioSelectUM {
val accountIcon: CryptoPortfolioIconUM? val accountIcon: AccountIconUM.CryptoPortfolio?
val portfolioName: TextReference val portfolioName: TextReference
when (selectedPortfolio.isAccountMode) { when (selectedPortfolio.isAccountMode) {
false -> { false -> {
@ -46,7 +47,7 @@ internal class AddTokenUiBuilder @Inject constructor(
val accountStatus = selectedPortfolio.account.account val accountStatus = selectedPortfolio.account.account
portfolioName = accountStatus.account.accountName.toUM().value portfolioName = accountStatus.account.accountName.toUM().value
accountIcon = when (accountStatus) { accountIcon = when (accountStatus) {
is AccountStatus.CryptoPortfolio -> accountStatus.account.icon.toUM() is AccountStatus.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(accountStatus.account.icon)
} }
} }
} }

View file

@ -3,6 +3,7 @@ package com.tangem.features.feed.components.market.details.portfolio.impl.model
import arrow.core.getOrElse import arrow.core.getOrElse
import com.tangem.blockchainsdk.compatibility.getTokenIdIfL2Network import com.tangem.blockchainsdk.compatibility.getTokenIdIfL2Network
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
@ -285,7 +286,7 @@ internal class NewMarketsPortfolioDelegate @AssistedInject constructor(
prefixText = TextReference.EMPTY, prefixText = TextReference.EMPTY,
name = this.accountName.toUM().value, name = this.accountName.toUM().value,
icon = when (this) { icon = when (this) {
is Account.CryptoPortfolio -> this.icon.toUM() is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(this.icon)
is Account.Payment -> TODO("[REDACTED_JIRA]") is Account.Payment -> TODO("[REDACTED_JIRA]")
}, },
), ),

View file

@ -1,8 +1,10 @@
package com.tangem.features.markets.portfolio.add.impl.model package com.tangem.features.markets.portfolio.add.impl.model
import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.common.ui.account.AccountIconUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.PortfolioSelectUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.common.ui.addtoken.AddTokenUM
import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.ParamsContainer import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
@ -16,7 +18,6 @@ import com.tangem.features.markets.impl.R
import com.tangem.features.markets.portfolio.add.api.SelectedNetwork import com.tangem.features.markets.portfolio.add.api.SelectedNetwork
import com.tangem.features.markets.portfolio.add.api.SelectedPortfolio import com.tangem.features.markets.portfolio.add.api.SelectedPortfolio
import com.tangem.features.markets.portfolio.add.impl.AddTokenComponent import com.tangem.features.markets.portfolio.add.impl.AddTokenComponent
import com.tangem.common.ui.addtoken.AddTokenUM
import javax.inject.Inject import javax.inject.Inject
@ModelScoped @ModelScoped
@ -35,7 +36,7 @@ internal class AddTokenUiBuilder @Inject constructor(
} }
private fun createPortfolio(selectedPortfolio: SelectedPortfolio): PortfolioSelectUM { private fun createPortfolio(selectedPortfolio: SelectedPortfolio): PortfolioSelectUM {
val accountIcon: CryptoPortfolioIconUM? val accountIcon: AccountIconUM.CryptoPortfolio?
val portfolioName: TextReference val portfolioName: TextReference
when (selectedPortfolio.isAccountMode) { when (selectedPortfolio.isAccountMode) {
false -> { false -> {
@ -46,7 +47,7 @@ internal class AddTokenUiBuilder @Inject constructor(
val accountStatus = selectedPortfolio.account.account val accountStatus = selectedPortfolio.account.account
portfolioName = accountStatus.account.accountName.toUM().value portfolioName = accountStatus.account.accountName.toUM().value
accountIcon = when (accountStatus) { accountIcon = when (accountStatus) {
is AccountStatus.CryptoPortfolio -> accountStatus.account.icon.toUM() is AccountStatus.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(accountStatus.account.icon)
} }
} }
} }

View file

@ -3,6 +3,7 @@ package com.tangem.features.markets.portfolio.impl.model
import arrow.core.getOrElse import arrow.core.getOrElse
import com.tangem.blockchainsdk.compatibility.getTokenIdIfL2Network import com.tangem.blockchainsdk.compatibility.getTokenIdIfL2Network
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
@ -286,7 +287,7 @@ internal class NewMarketsPortfolioDelegate @AssistedInject constructor(
prefixText = TextReference.EMPTY, prefixText = TextReference.EMPTY,
name = this.accountName.toUM().value, name = this.accountName.toUM().value,
icon = when (this) { icon = when (this) {
is Account.CryptoPortfolio -> this.icon.toUM() is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(this.icon)
is Account.Payment -> TODO("[REDACTED_JIRA]") is Account.Payment -> TODO("[REDACTED_JIRA]")
}, },
), ),

View file

@ -1,6 +1,7 @@
package com.tangem.features.nft.collections.entity.transformer package com.tangem.features.nft.collections.entity.transformer
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.ui.components.fields.entity.SearchBarUM import com.tangem.core.ui.components.fields.entity.SearchBarUM
import com.tangem.core.ui.components.notifications.NotificationConfig import com.tangem.core.ui.components.notifications.NotificationConfig
@ -100,7 +101,7 @@ internal class UpdateDataStateTransformer(
prefixText = TextReference.EMPTY, prefixText = TextReference.EMPTY,
name = this.accountName.toUM().value, name = this.accountName.toUM().value,
icon = when (this) { icon = when (this) {
is Account.CryptoPortfolio -> this.icon.toUM() is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(this.icon)
is Account.Payment -> TODO("[REDACTED_JIRA]") is Account.Payment -> TODO("[REDACTED_JIRA]")
}, },
), ),

View file

@ -3,6 +3,7 @@ package com.tangem.features.nft.details.block
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.ui.extensions.getActiveIconRes import com.tangem.core.ui.extensions.getActiveIconRes
@ -32,7 +33,7 @@ class DefaultNFTDetailsBlockComponent @AssistedInject constructor(
AccountTitleUM.Account( AccountTitleUM.Account(
prefixText = resourceReference(R.string.common_from), prefixText = resourceReference(R.string.common_from),
name = account.accountName.toUM().value, name = account.accountName.toUM().value,
icon = account.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(account.icon),
) )
} else { } else {
AccountTitleUM.Text(params.walletTitle) AccountTitleUM.Text(params.walletTitle)

View file

@ -1,6 +1,7 @@
package com.tangem.features.onramp.hottokens.portfolio.entity package com.tangem.features.onramp.hottokens.portfolio.entity
import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.common.ui.account.AccountIconUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.PortfolioSelectUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.common.ui.addtoken.AddTokenUM import com.tangem.common.ui.addtoken.AddTokenUM
@ -36,7 +37,7 @@ internal class OnrampAddTokenUiBuilder @Inject constructor(
} }
private suspend fun createPortfolio(tokenToAdd: AddHotCryptoData): PortfolioSelectUM { private suspend fun createPortfolio(tokenToAdd: AddHotCryptoData): PortfolioSelectUM {
val accountIcon: CryptoPortfolioIconUM? val accountIcon: AccountIconUM.CryptoPortfolio?
val portfolioName: TextReference val portfolioName: TextReference
val isAccountMode = isAccountsModeEnabledUseCase.invokeSync() val isAccountMode = isAccountsModeEnabledUseCase.invokeSync()
when (isAccountMode) { when (isAccountMode) {
@ -48,7 +49,7 @@ internal class OnrampAddTokenUiBuilder @Inject constructor(
val accountStatus = tokenToAdd.account val accountStatus = tokenToAdd.account
portfolioName = accountStatus.account.accountName.toUM().value portfolioName = accountStatus.account.accountName.toUM().value
accountIcon = when (accountStatus) { accountIcon = when (accountStatus) {
is AccountStatus.CryptoPortfolio -> accountStatus.account.icon.toUM() is AccountStatus.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(accountStatus.account.icon)
} }
} }
} }

View file

@ -1,7 +1,7 @@
package com.tangem.features.onramp.swap.entity package com.tangem.features.onramp.swap.entity
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.common.ui.account.AccountIconUM
import com.tangem.core.ui.components.token.state.TokenItemState import com.tangem.core.ui.components.token.state.TokenItemState
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
@ -57,7 +57,7 @@ internal sealed interface ExchangeCardUM {
data class Account( data class Account(
val prefixText: TextReference, val prefixText: TextReference,
val name: TextReference, val name: TextReference,
val icon: CryptoPortfolioIconUM, val icon: AccountIconUM.CryptoPortfolio,
) : TitleUM ) : TitleUM
} }
} }

View file

@ -1,5 +1,6 @@
package com.tangem.features.onramp.swap.entity.utils package com.tangem.features.onramp.swap.entity.utils
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.ui.components.token.state.TokenItemState import com.tangem.core.ui.components.token.state.TokenItemState
import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.extensions.resourceReference
@ -45,7 +46,7 @@ internal fun ExchangeCardUM.toFilled(
resourceReference(R.string.common_to) resourceReference(R.string.common_to)
}, },
name = account.accountName.toUM().value, name = account.accountName.toUM().value,
icon = account.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(account.icon),
) )
} else { } else {
titleUM titleUM

View file

@ -1,5 +1,6 @@
package com.tangem.feature.referral.model package com.tangem.feature.referral.model
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.PortfolioSelectUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.common.ui.tokens.TokenItemStateConverter.Companion.getFormattedCryptoAmount import com.tangem.common.ui.tokens.TokenItemStateConverter.Companion.getFormattedCryptoAmount
@ -62,7 +63,7 @@ internal class AccountAwardConverter(
isBalanceHidden = isBalanceHidden, isBalanceHidden = isBalanceHidden,
tokenState = tokenState, tokenState = tokenState,
accountSelectUM = PortfolioSelectUM( accountSelectUM = PortfolioSelectUM(
icon = cryptoPortfolio.account.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(cryptoPortfolio.account.icon),
name = cryptoPortfolio.account.accountName.toUM().value, name = cryptoPortfolio.account.accountName.toUM().value,
isAccountMode = true, isAccountMode = true,
onClick = onAccountClick, onClick = onAccountClick,

View file

@ -1,6 +1,7 @@
package com.tangem.features.send.v2.subcomponents.destination.model.converters package com.tangem.features.send.v2.subcomponents.destination.model.converters
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.extensions.stringReference
import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.currency.CryptoCurrency
@ -58,7 +59,7 @@ internal class SendRecipientWalletListConverter(
accountTitleUM = if (account != null && isAccountsMode) { accountTitleUM = if (account != null && isAccountsMode) {
AccountTitleUM.Account( AccountTitleUM.Account(
name = account.accountName.toUM().value, name = account.accountName.toUM().value,
icon = account.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(account.icon),
prefixText = stringReference(StringsSigns.DOT), prefixText = stringReference(StringsSigns.DOT),
) )
} else { } else {

View file

@ -27,7 +27,7 @@ import androidx.compose.ui.unit.dp
import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountNameUM
import com.tangem.common.ui.account.AccountTitle import com.tangem.common.ui.account.AccountTitle
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.core.ui.components.CircleShimmer import com.tangem.core.ui.components.CircleShimmer
import com.tangem.core.ui.components.RectangleShimmer import com.tangem.core.ui.components.RectangleShimmer
import com.tangem.core.ui.components.atoms.text.EllipsisText import com.tangem.core.ui.components.atoms.text.EllipsisText
@ -271,7 +271,7 @@ private class ListItemWithIconPreviewProvider : CollectionPreviewParameterProvid
subtitle = "Wallet", subtitle = "Wallet",
accountTitleUM = AccountTitleUM.Account( accountTitleUM = AccountTitleUM.Account(
name = AccountNameUM.DefaultMain.value, name = AccountNameUM.DefaultMain.value,
icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()),
prefixText = stringReference(StringsSigns.DOT), prefixText = stringReference(StringsSigns.DOT),
), ),
), ),

View file

@ -2,7 +2,7 @@ package com.tangem.feature.swap.preview
import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountNameUM
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.core.ui.components.currency.icon.CurrencyIconState import com.tangem.core.ui.components.currency.icon.CurrencyIconState
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.extensions.stringReference
@ -22,12 +22,12 @@ internal data object SwapSuccessStatePreview {
fromTitle = AccountTitleUM.Account( fromTitle = AccountTitleUM.Account(
prefixText = stringReference("From"), prefixText = stringReference("From"),
name = AccountNameUM.DefaultMain.value, name = AccountNameUM.DefaultMain.value,
icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()),
), ),
toTitle = AccountTitleUM.Account( toTitle = AccountTitleUM.Account(
prefixText = stringReference("To"), prefixText = stringReference("To"),
name = AccountNameUM.DefaultMain.value, name = AccountNameUM.DefaultMain.value,
icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()),
), ),
fromTokenAmount = TextReference.Str("1 000 DAI"), fromTokenAmount = TextReference.Str("1 000 DAI"),
toTokenAmount = TextReference.Str("1 000 MATIC"), toTokenAmount = TextReference.Str("1 000 MATIC"),

View file

@ -3,6 +3,7 @@ package com.tangem.feature.swap.ui
import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.TextRange
import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.input.TextFieldValue
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.common.ui.alerts.models.AlertDemoModeUM import com.tangem.common.ui.alerts.models.AlertDemoModeUM
import com.tangem.common.ui.bottomsheet.permission.state.* import com.tangem.common.ui.bottomsheet.permission.state.*
@ -1421,7 +1422,7 @@ internal class StateBuilder(
AccountTitleUM.Account( AccountTitleUM.Account(
prefixText = resourceReference(R.string.common_from), prefixText = resourceReference(R.string.common_from),
name = fromAccount.accountName.toUM().value, name = fromAccount.accountName.toUM().value,
icon = fromAccount.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(fromAccount.icon),
) )
} else { } else {
AccountTitleUM.Text(resourceReference(R.string.swapping_from_title)) AccountTitleUM.Text(resourceReference(R.string.swapping_from_title))
@ -1433,7 +1434,7 @@ internal class StateBuilder(
AccountTitleUM.Account( AccountTitleUM.Account(
prefixText = resourceReference(R.string.common_to), prefixText = resourceReference(R.string.common_to),
name = toAccount.accountName.toUM().value, name = toAccount.accountName.toUM().value,
icon = toAccount.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(toAccount.icon),
) )
} else { } else {
AccountTitleUM.Text(resourceReference(R.string.swapping_to_title)) AccountTitleUM.Text(resourceReference(R.string.swapping_to_title))

View file

@ -38,7 +38,7 @@ import coil.request.ImageRequest
import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountNameUM
import com.tangem.common.ui.account.AccountTitle import com.tangem.common.ui.account.AccountTitle
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.core.ui.R import com.tangem.core.ui.R
import com.tangem.core.ui.components.* import com.tangem.core.ui.components.*
import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.extensions.resourceReference
@ -604,7 +604,7 @@ private fun TransactionCardPreviewWithPriceImpact() {
accountTitleUM = AccountTitleUM.Account( accountTitleUM = AccountTitleUM.Account(
prefixText = resourceReference(R.string.common_from), prefixText = resourceReference(R.string.common_from),
name = AccountNameUM.DefaultMain.value, name = AccountNameUM.DefaultMain.value,
icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()),
), ),
), ),
amountEquivalent = "1 000 000", amountEquivalent = "1 000 000",
@ -626,7 +626,7 @@ private fun TransactionCardPreviewWithoutPriceImpact() {
accountTitleUM = AccountTitleUM.Account( accountTitleUM = AccountTitleUM.Account(
prefixText = resourceReference(R.string.common_from), prefixText = resourceReference(R.string.common_from),
name = AccountNameUM.DefaultMain.value, name = AccountNameUM.DefaultMain.value,
icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()),
), ),
), ),
amountEquivalent = "1 000 000", amountEquivalent = "1 000 000",

View file

@ -5,7 +5,8 @@ import com.arkivanov.decompose.router.stack.StackNavigation
import com.arkivanov.decompose.router.stack.pop import com.arkivanov.decompose.router.stack.pop
import com.arkivanov.decompose.router.stack.pushNew import com.arkivanov.decompose.router.stack.pushNew
import com.domain.blockaid.models.dapp.CheckDAppResult import com.domain.blockaid.models.dapp.CheckDAppResult
import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.common.ui.account.AccountIconUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.PortfolioSelectUM
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.api.AnalyticsEventHandler
@ -276,10 +277,10 @@ internal class WcPairModel @Inject constructor(
is Account.Payment -> TODO("[REDACTED_JIRA]") is Account.Payment -> TODO("[REDACTED_JIRA]")
} }
val isAccountMode = selectorController.isAccountMode.first() val isAccountMode = selectorController.isAccountMode.first()
val icon: CryptoPortfolioIconUM? val icon: AccountIconUM.CryptoPortfolio?
val name: TextReference val name: TextReference
if (isAccountMode) { if (isAccountMode) {
icon = account.icon.toUM() icon = CryptoPortfolioIconConverter.convert(account.icon)
name = account.accountName.toUM().value name = account.accountName.toUM().value
} else { } else {
icon = null icon = null

View file

@ -1,6 +1,7 @@
package com.tangem.features.walletconnect.connections.model.transformers package com.tangem.features.walletconnect.connections.model.transformers
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import com.tangem.domain.account.models.AccountList import com.tangem.domain.account.models.AccountList
@ -70,7 +71,7 @@ internal class WcSessionsAccountModeTransformer(
val accountTitle = AccountTitleUM.Account( val accountTitle = AccountTitleUM.Account(
prefixText = TextReference.EMPTY, prefixText = TextReference.EMPTY,
name = account.accountName.toUM().value, name = account.accountName.toUM().value,
icon = accountIcon.toUM(), icon = CryptoPortfolioIconConverter.convert(accountIcon),
) )
val accountConnections = WcConnectionsItem.PortfolioConnections( val accountConnections = WcConnectionsItem.PortfolioConnections(

View file

@ -1,6 +1,7 @@
package com.tangem.features.walletconnect.transaction.converter package com.tangem.features.walletconnect.transaction.converter
import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.account.AccountTitleUM
import com.tangem.common.ui.account.CryptoPortfolioIconConverter
import com.tangem.common.ui.account.toUM import com.tangem.common.ui.account.toUM
import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.extensions.stringReference
@ -32,7 +33,7 @@ internal class WcPortfolioNameDelegate @AssistedInject constructor(
AccountTitleUM.Account( AccountTitleUM.Account(
prefixText = TextReference.EMPTY, prefixText = TextReference.EMPTY,
name = account.accountName.toUM().value, name = account.accountName.toUM().value,
icon = account.icon.toUM(), icon = CryptoPortfolioIconConverter.convert(account.icon),
) )
} else { } else {
AccountTitleUM.Text(stringReference(value.wallet.name)) AccountTitleUM.Text(stringReference(value.wallet.name))