diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index dc9ced8f5c..6eca54cb33 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -12,12 +12,20 @@
Set a %s-digit Access Code to unlock your wallet.
Create Access Code
Access code
+ You cannot create more than %1$s accounts. Archive one to add new.
+ Can’t add new account
+ Account archived
+ Archived accounts
Recover
+ You’re about to recover “%1$s”.
+ Recover account
Archived
+ Account created
Archive account
Archive
You are archiving this account, but you can always get it back.
Account
+ Account saved
Account #%s — used for address derivation.
Add account
Save
@@ -26,6 +34,9 @@
New account
Add account
Edit account
+ %1$s in %2$s
+ Account recovered
+ Long tap on an account to reorder accounts
Keep Editing
Discard
Are you sure you want to discard new account?
@@ -117,6 +128,16 @@
Please try again in 30 seconds or scan the card or ring
Too many attempts
You have disabled biometric authentication on your phone and will not be able to save wallets in the app. To save wallets, please enable the biometric authentication function in your phone settings.
+ An error occurred while processing your promo code. Please try again later.
+ Activation error
+ Your promo code was successfully activated. A bonus of 10 USDT in Bitcoin will be credited to your account within 14 days.
+ Promo Code Activated
+ This promo code has already been used and cannot be activated again.
+ Code unavailable
+ This promo code is not valid and cannot be activated.
+ Invalid code
+ A Bitcoin address is required to receive the bonus. Please add one to your wallet and retry the activation.
+ Bitcoin address required
Start backup process
Use a bank card or other payment methods
@@ -152,6 +173,7 @@
Not enough ADA
Accept
Access denied
+ Accounts
Add
Add to portfolio
Add token
@@ -234,11 +256,17 @@
In progress
Later
%1$s left
+ Legacy Bitcoin
Locked
Main network
month
Network fee
Amount sent will be reduced by %1$s (%2$s) to cover the selected fee level
+
+ - %d network
+ - %d networks
+
+ New address
Next
NFT
No
@@ -363,6 +391,7 @@
Details
Check your internet connection or switch to a different network
Terms of service
+ Default Address
Receive assets
Sending assets in other networks will result in permanent loss.
%s network
@@ -717,6 +746,9 @@
Join Now
Share your code - earn 5 USDT per sale. Your friend gets 10% OFF.
Get REWARDS for every friend!
+ Buy crypto
+ Enjoy zero fees when purchasing crypto via SEPA transfer.
+ Buy Crypto with SEPA
Set up a single access code to protect all your devices.
Protect
Set an individual access code for each card or ring later.
diff --git a/data/transaction/src/main/java/com/tangem/data/transaction/DefaultWalletAddressServiceRepository.kt b/data/transaction/src/main/java/com/tangem/data/transaction/DefaultWalletAddressServiceRepository.kt
index 10dba2b58b..23990f9704 100644
--- a/data/transaction/src/main/java/com/tangem/data/transaction/DefaultWalletAddressServiceRepository.kt
+++ b/data/transaction/src/main/java/com/tangem/data/transaction/DefaultWalletAddressServiceRepository.kt
@@ -31,7 +31,7 @@ class DefaultWalletAddressServiceRepository(
blockchain = blockchain,
derivationPath = network.derivationPath.value,
)
- walletManager?.wallet?.ens
+ walletManager?.wallet?.ens.takeIf { it.isNullOrEmpty().not() }
}
}
diff --git a/domain/models/src/main/kotlin/com/tangem/domain/models/TokenReceiveConfig.kt b/domain/models/src/main/kotlin/com/tangem/domain/models/TokenReceiveConfig.kt
index 728496ef05..d884942aeb 100644
--- a/domain/models/src/main/kotlin/com/tangem/domain/models/TokenReceiveConfig.kt
+++ b/domain/models/src/main/kotlin/com/tangem/domain/models/TokenReceiveConfig.kt
@@ -19,10 +19,9 @@ data class TokenReceiveConfig(
data class ReceiveAddressModel(
val nameService: NameService,
val value: String,
- val displayName: String,
) {
enum class NameService {
- Default, Ens
+ Default, Legacy, Ens
}
}
diff --git a/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/GetReverseResolvedEnsAddressUseCase.kt b/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/GetReverseResolvedEnsAddressUseCase.kt
index 93f053818e..6d8eadf4e0 100644
--- a/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/GetReverseResolvedEnsAddressUseCase.kt
+++ b/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/GetReverseResolvedEnsAddressUseCase.kt
@@ -35,7 +35,13 @@ class GetReverseResolvedEnsAddressUseCase(private val walletAddressServiceReposi
return when (reverseResolveAddressResult) {
is ReverseResolveAddressResult.Error -> EnsAddress.Error(reverseResolveAddressResult.error)
ReverseResolveAddressResult.NotSupported -> EnsAddress.NotSupported
- is ReverseResolveAddressResult.Resolved -> EnsAddress.Address(reverseResolveAddressResult.name)
+ is ReverseResolveAddressResult.Resolved -> {
+ if (reverseResolveAddressResult.name.isEmpty()) {
+ EnsAddress.NotSupported
+ } else {
+ EnsAddress.Address(reverseResolveAddressResult.name)
+ }
+ }
}
}
}
\ No newline at end of file
diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MarketsPortfolioModel.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MarketsPortfolioModel.kt
index 60673724c0..f7a23493ed 100644
--- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MarketsPortfolioModel.kt
+++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MarketsPortfolioModel.kt
@@ -26,6 +26,7 @@ import com.tangem.domain.models.ReceiveAddressModel
import com.tangem.domain.models.TokenReceiveConfig
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.network.Network
+import com.tangem.domain.models.network.NetworkAddress
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.models.wallet.isMultiCurrency
@@ -399,16 +400,17 @@ internal class MarketsPortfolioModel @Inject constructor(
ReceiveAddressModel(
nameService = ReceiveAddressModel.NameService.Ens,
value = ens,
- displayName = ens,
),
)
}
addresses.availableAddresses.map { address ->
add(
ReceiveAddressModel(
- nameService = ReceiveAddressModel.NameService.Default,
+ nameService = when (address.type) {
+ NetworkAddress.Address.Type.Primary -> ReceiveAddressModel.NameService.Default
+ NetworkAddress.Address.Type.Secondary -> ReceiveAddressModel.NameService.Legacy
+ },
value = address.value,
- displayName = "${cryptoCurrency.name} (${cryptoCurrency.symbol})",
),
)
}
diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt
index 632959d7e8..0439b74aea 100644
--- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt
+++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt
@@ -209,16 +209,17 @@ internal class NFTReceiveModel @Inject constructor(
ReceiveAddressModel(
nameService = ReceiveAddressModel.NameService.Ens,
value = ens,
- displayName = ens,
),
)
}
addresses.availableAddresses.map { address ->
add(
ReceiveAddressModel(
- nameService = ReceiveAddressModel.NameService.Default,
+ nameService = when (address.type) {
+ NetworkAddress.Address.Type.Primary -> ReceiveAddressModel.NameService.Default
+ NetworkAddress.Address.Type.Secondary -> ReceiveAddressModel.NameService.Legacy
+ },
value = address.value,
- displayName = cryptoCurrency.symbol,
),
)
}
diff --git a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/component/DefaultTokenReceiveComponent.kt b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/component/DefaultTokenReceiveComponent.kt
index 83b0cf3b6f..a6914ac4c4 100644
--- a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/component/DefaultTokenReceiveComponent.kt
+++ b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/component/DefaultTokenReceiveComponent.kt
@@ -77,7 +77,7 @@ internal class DefaultTokenReceiveComponent @AssistedInject constructor(
is TokenReceiveRoutes.QrCode -> TokenReceiveQrCodeComponent(
appComponentContext = appComponentContext,
params = TokenReceiveQrCodeComponent.TokenReceiveQrCodeParams(
- network = model.params.config.cryptoCurrency.network.name,
+ cryptoCurrency = model.params.config.cryptoCurrency,
address = model.state.value.addresses[config.addressId] ?: error("Address has to be there"),
callback = model,
onDismiss = ::dismiss,
diff --git a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/component/TokenReceiveQrCodeComponent.kt b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/component/TokenReceiveQrCodeComponent.kt
index 8191f9a208..3eef391fc6 100644
--- a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/component/TokenReceiveQrCodeComponent.kt
+++ b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/component/TokenReceiveQrCodeComponent.kt
@@ -7,6 +7,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.model.getOrCreateModel
import com.tangem.core.ui.decompose.ComposableContentComponent
+import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.features.tokenreceive.entity.ReceiveAddress
import com.tangem.features.tokenreceive.model.TokenReceiveQrCodeModel
import com.tangem.features.tokenreceive.ui.TokenReceiveQrCodeContent
@@ -31,7 +32,7 @@ internal class TokenReceiveQrCodeComponent(
data class TokenReceiveQrCodeParams(
val id: Int,
- val network: String,
+ val cryptoCurrency: CryptoCurrency,
val address: ReceiveAddress,
val callback: TokenReceiveQrCodeModelCallback,
val onDismiss: () -> Unit,
diff --git a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/entity/ReceiveAddress.kt b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/entity/ReceiveAddress.kt
index 960dda1224..0157541c0c 100644
--- a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/entity/ReceiveAddress.kt
+++ b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/entity/ReceiveAddress.kt
@@ -1,16 +1,27 @@
package com.tangem.features.tokenreceive.entity
+import androidx.compose.runtime.Immutable
import com.tangem.core.ui.extensions.TextReference
internal data class ReceiveAddress(
val value: String,
val type: Type,
) {
+
+ @Immutable
sealed interface Type {
data object Ens : Type
- data class Default(
- val displayName: TextReference,
- ) : Type
+ sealed interface Primary : Type {
+
+ val displayName: TextReference
+
+ data class Default(
+ val title: TextReference?,
+ override val displayName: TextReference,
+ ) : Primary
+
+ data class Legacy(override val displayName: TextReference) : Primary
+ }
}
}
\ No newline at end of file
diff --git a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveAssetsModel.kt b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveAssetsModel.kt
index bf37b011e3..fb162c4c53 100644
--- a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveAssetsModel.kt
+++ b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveAssetsModel.kt
@@ -44,7 +44,6 @@ internal class TokenReceiveAssetsModel @Inject constructor(
showMemoDisclaimer = params.showMemoDisclaimer,
isEnsResultLoading = false,
notificationConfigs = params.notificationConfigs,
- fullName = params.fullName,
),
)
diff --git a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveModel.kt b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveModel.kt
index 183d11d046..0c7e6de0bf 100644
--- a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveModel.kt
+++ b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveModel.kt
@@ -12,8 +12,8 @@ import com.tangem.core.ui.R
import com.tangem.core.ui.clipboard.ClipboardManager
import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
import com.tangem.core.ui.components.notifications.NotificationConfig
+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.domain.models.Asset
import com.tangem.domain.models.ReceiveAddressModel
@@ -25,6 +25,8 @@ import com.tangem.domain.transaction.usecase.GetReverseResolvedEnsAddressUseCase
import com.tangem.features.tokenreceive.TokenReceiveComponent
import com.tangem.features.tokenreceive.component.TokenReceiveModelCallback
import com.tangem.features.tokenreceive.entity.ReceiveAddress
+import com.tangem.features.tokenreceive.entity.ReceiveAddress.Type.Ens
+import com.tangem.features.tokenreceive.entity.ReceiveAddress.Type.Primary
import com.tangem.features.tokenreceive.route.TokenReceiveRoutes
import com.tangem.features.tokenreceive.ui.state.TokenReceiveUM
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
@@ -103,17 +105,33 @@ internal class TokenReceiveModel @Inject constructor(
}
}
- private fun mapAddresses(addresses: List): ImmutableMap {
+ private fun mapAddresses(
+ addresses: List,
+ networkName: String,
+ ): ImmutableMap {
+ val conditionToUseTitle = addresses.any { it.nameService == ReceiveAddressModel.NameService.Legacy }
return buildMap {
addresses.mapIndexed { index, model ->
val type = when (model.nameService) {
ReceiveAddressModel.NameService.Default -> {
- ReceiveAddress.Type.Default(
- displayName = stringReference(model.displayName),
+ Primary.Default(
+ displayName = TextReference.Res(
+ id = R.string.domain_receive_assets_onboarding_network_name,
+ formatArgs = wrappedList(networkName),
+ ),
+ title = if (conditionToUseTitle) {
+ TextReference.Res(R.string.domain_receive_assets_default_address)
+ } else {
+ null
+ },
)
}
- ReceiveAddressModel.NameService.Ens -> ReceiveAddress.Type.Ens
+ ReceiveAddressModel.NameService.Ens -> Ens
+ ReceiveAddressModel.NameService.Legacy -> Primary.Legacy(
+ displayName = TextReference.Res(R.string.common_legacy_bitcoin_address),
+ )
}
+
put(
key = index,
value = ReceiveAddress(
@@ -146,10 +164,18 @@ internal class TokenReceiveModel @Inject constructor(
val newEnsAddresses = reverseResolveResult
.filterIsInstance()
.filterNot { it.name in currentAddressValues }
- .map { ensAddress -> ReceiveAddress(value = ensAddress.name, type = ReceiveAddress.Type.Ens) }
+ .map { ensAddress -> ReceiveAddress(value = ensAddress.name, type = Ens) }
val combinedAddresses = (state.value.addresses.values + newEnsAddresses)
- .sortedWith(compareByDescending { it.type is ReceiveAddress.Type.Ens })
+ .sortedWith(
+ compareBy { address ->
+ when (address.type) {
+ is Ens -> 0
+ is Primary.Default -> 1
+ is Primary.Legacy -> 2
+ }
+ },
+ )
val updatedAddresses = combinedAddresses
.mapIndexed { index, address -> index to address }
@@ -191,7 +217,10 @@ internal class TokenReceiveModel @Inject constructor(
private fun getInitState(): TokenReceiveUM {
return TokenReceiveUM(
- addresses = mapAddresses(params.config.receiveAddress),
+ addresses = mapAddresses(
+ addresses = params.config.receiveAddress,
+ networkName = params.config.cryptoCurrency.network.name,
+ ),
iconState = iconStateConverter.convert(params.config.cryptoCurrency),
network = params.config.cryptoCurrency.network.name,
isEnsResultLoading = false,
@@ -201,13 +230,13 @@ internal class TokenReceiveModel @Inject constructor(
private fun sendCopyActionAnalytic(receiveAddress: ReceiveAddress) {
val event = when (receiveAddress.type) {
- is ReceiveAddress.Type.Default -> {
+ is Primary -> {
TokenReceiveNewAnalyticsEvent.ButtonCopyAddress(
token = getTokenName(),
blockchainName = params.config.cryptoCurrency.network.name,
)
}
- ReceiveAddress.Type.Ens -> {
+ Ens -> {
TokenReceiveNewAnalyticsEvent.ButtonCopyEns(
token = getTokenName(),
blockchainName = params.config.cryptoCurrency.network.name,
diff --git a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveQrCodeModel.kt b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveQrCodeModel.kt
index 68246b663f..0a1f5ccddd 100644
--- a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveQrCodeModel.kt
+++ b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/model/TokenReceiveQrCodeModel.kt
@@ -6,7 +6,6 @@ import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.ui.extensions.TextReference
import com.tangem.features.tokenreceive.component.TokenReceiveQrCodeComponent
-import com.tangem.features.tokenreceive.entity.ReceiveAddress
import com.tangem.features.tokenreceive.ui.state.QrCodeUM
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.flow.MutableStateFlow
@@ -25,9 +24,9 @@ internal class TokenReceiveQrCodeModel @Inject constructor(
internal val state: StateFlow
field = MutableStateFlow(
QrCodeUM(
- network = params.network,
+ network = params.cryptoCurrency.network.name,
addressValue = params.address.value,
- addressName = (params.address.type as? ReceiveAddress.Type.Default)?.displayName ?: TextReference.EMPTY,
+ addressName = TextReference.Str("${params.cryptoCurrency.name} (${params.cryptoCurrency.symbol})"),
onCopyClick = { params.callback.onCopyClick(params.id) },
onShareClick = params.callback::onShareClick,
),
diff --git a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/ui/TokenReceiveAssetsContent.kt b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/ui/TokenReceiveAssetsContent.kt
index 10f41e7e05..84c59aeb20 100644
--- a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/ui/TokenReceiveAssetsContent.kt
+++ b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/ui/TokenReceiveAssetsContent.kt
@@ -27,6 +27,7 @@ import androidx.compose.ui.util.fastForEach
import com.tangem.common.ui.notifications.NotificationUM
import com.tangem.core.res.getStringSafe
import com.tangem.core.ui.R
+import com.tangem.core.ui.components.SpacerH
import com.tangem.core.ui.components.SpacerH12
import com.tangem.core.ui.components.SpacerH8
import com.tangem.core.ui.components.SpacerW12
@@ -36,6 +37,7 @@ import com.tangem.core.ui.components.atoms.text.TextEllipsis
import com.tangem.core.ui.components.buttons.small.TangemIconButton
import com.tangem.core.ui.components.icons.identicon.IdentIcon
import com.tangem.core.ui.components.notifications.Notification
+import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.stringResourceSafe
@@ -78,7 +80,6 @@ internal fun TokenReceiveAssetsContent(assetsUM: ReceiveAssetsUM) {
onOpenQrCodeClick = assetsUM.onOpenQrCodeClick,
addresses = assetsUM.addresses,
snackbarHostState = snackbarHostState,
- fullName = assetsUM.fullName,
)
if (assetsUM.isEnsResultLoading) {
@@ -125,7 +126,6 @@ private fun AddressBlock(
onCopyClick: (id: Int) -> Unit,
addresses: ImmutableMap,
snackbarHostState: SnackbarHostState,
- fullName: String,
) {
val hapticFeedback = LocalHapticFeedback.current
val coroutineScope = rememberCoroutineScope()
@@ -133,8 +133,8 @@ private fun AddressBlock(
val resources = context.resources
addresses.entries.toList().fastForEach { entry ->
- when (entry.value.type) {
- is ReceiveAddress.Type.Default -> {
+ when (val type = entry.value.type) {
+ is ReceiveAddress.Type.Primary -> {
key(entry.key) {
AddressItem(
onCopyClick = {
@@ -152,8 +152,8 @@ private fun AddressBlock(
hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress)
onOpenQrCodeClick(entry.key)
},
- fullName = fullName,
address = entry.value.value,
+ primaryType = type,
)
SpacerH8()
}
@@ -184,9 +184,9 @@ private fun AddressBlock(
@Composable
private fun AddressItem(
onOpenQrCodeClick: () -> Unit,
- fullName: String,
onCopyClick: () -> Unit,
address: String,
+ primaryType: ReceiveAddress.Type.Primary,
modifier: Modifier = Modifier,
) {
Card(
@@ -195,52 +195,68 @@ private fun AddressItem(
colors = CardDefaults.cardColors(containerColor = TangemTheme.colors.background.action),
onClick = onOpenQrCodeClick,
) {
- Row(
- modifier = Modifier
- .fillMaxWidth()
- .padding(vertical = 14.dp, horizontal = 12.dp),
- verticalAlignment = Alignment.CenterVertically,
+ Column(
+ modifier = Modifier.padding(vertical = 14.dp, horizontal = 12.dp),
) {
- IdentIcon(
- address = address,
- modifier = Modifier
- .size(size = 36.dp)
- .clip(shape = RoundedCornerShape(18.dp)),
- )
-
- SpacerW12()
-
- Column(modifier = Modifier.weight(1f)) {
- EllipsisText(
- text = stringResourceSafe(R.string.domain_receive_assets_onboarding_network_name, fullName),
- ellipsis = TextEllipsis.Middle,
- color = TangemTheme.colors.text.primary1,
- style = TangemTheme.typography.subtitle1,
- )
-
- EllipsisText(
- text = address,
- ellipsis = TextEllipsis.Middle,
- color = TangemTheme.colors.text.tertiary,
- style = TangemTheme.typography.caption2,
- )
+ when (primaryType) {
+ is ReceiveAddress.Type.Primary.Default -> {
+ primaryType.title?.let {
+ Text(
+ text = it.resolveReference(),
+ style = TangemTheme.typography.subtitle2,
+ color = TangemTheme.colors.text.tertiary,
+ )
+ SpacerH(12.dp)
+ }
+ }
+ is ReceiveAddress.Type.Primary.Legacy -> Unit
}
- SpacerW12()
+ Row(
+ modifier = Modifier.fillMaxWidth(),
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ IdentIcon(
+ address = address,
+ modifier = Modifier
+ .size(size = 36.dp)
+ .clip(shape = RoundedCornerShape(18.dp)),
+ )
- TangemIconButton(
- modifier = Modifier.size(TangemTheme.dimens.size28),
- iconRes = R.drawable.ic_qrcode_new_24,
- onClick = onOpenQrCodeClick,
- )
+ SpacerW12()
- SpacerW8()
+ Column(modifier = Modifier.weight(1f)) {
+ EllipsisText(
+ text = primaryType.displayName.resolveReference(),
+ ellipsis = TextEllipsis.Middle,
+ color = TangemTheme.colors.text.primary1,
+ style = TangemTheme.typography.subtitle1,
+ )
- TangemIconButton(
- modifier = Modifier.size(TangemTheme.dimens.size28),
- iconRes = R.drawable.ic_copy_new_24,
- onClick = onCopyClick,
- )
+ EllipsisText(
+ text = address,
+ ellipsis = TextEllipsis.Middle,
+ color = TangemTheme.colors.text.tertiary,
+ style = TangemTheme.typography.caption2,
+ )
+ }
+
+ SpacerW12()
+
+ TangemIconButton(
+ modifier = Modifier.size(TangemTheme.dimens.size28),
+ iconRes = R.drawable.ic_qrcode_new_24,
+ onClick = onOpenQrCodeClick,
+ )
+
+ SpacerW8()
+
+ TangemIconButton(
+ modifier = Modifier.size(TangemTheme.dimens.size28),
+ iconRes = R.drawable.ic_copy_new_24,
+ onClick = onCopyClick,
+ )
+ }
}
}
}
@@ -318,8 +334,9 @@ private fun Preview_TokenReceiveAssetsContent(
private class TokenReceiveAssetsContentProvider : PreviewParameterProvider {
val address = ReceiveAddress(
value = "0xe5178c7d4d0e861ed2e9414e045b501226b0de8d",
- type = ReceiveAddress.Type.Default(
+ type = ReceiveAddress.Type.Primary.Default(
displayName = stringReference("Etherium address"),
+ title = null,
),
)
private val config = ReceiveAssetsUM(
@@ -338,7 +355,6 @@ private class TokenReceiveAssetsContentProvider : PreviewParameterProvider
diff --git a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/ui/state/ReceiveAssetsUM.kt b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/ui/state/ReceiveAssetsUM.kt
index 3953389152..905b3c0878 100644
--- a/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/ui/state/ReceiveAssetsUM.kt
+++ b/features/token-recieve/impl/src/main/java/com/tangem/features/tokenreceive/ui/state/ReceiveAssetsUM.kt
@@ -12,5 +12,4 @@ internal data class ReceiveAssetsUM(
val onCopyClick: (id: Int) -> Unit,
val isEnsResultLoading: Boolean,
val notificationConfigs: ImmutableList,
- val fullName: String,
)
\ No newline at end of file
diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt
index 7f2de4ef2c..ddba4024a8 100644
--- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt
+++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt
@@ -1089,16 +1089,17 @@ internal class TokenDetailsModel @Inject constructor(
ReceiveAddressModel(
nameService = ReceiveAddressModel.NameService.Ens,
value = ens,
- displayName = ens,
),
)
}
addresses.availableAddresses.map { address ->
add(
ReceiveAddressModel(
- nameService = ReceiveAddressModel.NameService.Default,
+ nameService = when (address.type) {
+ NetworkAddress.Address.Type.Primary -> ReceiveAddressModel.NameService.Default
+ NetworkAddress.Address.Type.Secondary -> ReceiveAddressModel.NameService.Legacy
+ },
value = address.value,
- displayName = "${cryptoCurrency.name} (${cryptoCurrency.symbol})",
),
)
}
diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletCurrencyActionsClickIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletCurrencyActionsClickIntents.kt
index 71d5e76c5e..8e7103d993 100644
--- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletCurrencyActionsClickIntents.kt
+++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletCurrencyActionsClickIntents.kt
@@ -673,16 +673,17 @@ internal class WalletCurrencyActionsClickIntentsImplementor @Inject constructor(
ReceiveAddressModel(
nameService = ReceiveAddressModel.NameService.Ens,
value = ens,
- displayName = ens,
),
)
}
networkAddress.availableAddresses.map { address ->
add(
ReceiveAddressModel(
- nameService = ReceiveAddressModel.NameService.Default,
+ nameService = when (address.type) {
+ NetworkAddress.Address.Type.Primary -> ReceiveAddressModel.NameService.Default
+ NetworkAddress.Address.Type.Secondary -> ReceiveAddressModel.NameService.Legacy
+ },
value = address.value,
- displayName = "${cryptoCurrencyStatus.currency.name} (${cryptoCurrencyStatus.currency.symbol})",
),
)
}