Updated on 2026-08-14

This commit is contained in:
Tangem 2023-11-30 10:36:39 +04:00
parent 536dcb4f3e
commit ed5d5b1b33
23 changed files with 269 additions and 187 deletions

View file

@ -8,6 +8,7 @@ import com.tangem.core.ui.R
import com.tangem.core.ui.components.SimpleSettingsRow
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheet
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.res.TangemTheme
@Composable
@ -24,7 +25,7 @@ private fun ChooseAddressBottomSheetContent(content: ChooseAddressBottomSheetCon
) {
content.addressModels.forEach { addressModel ->
SimpleSettingsRow(
title = addressModel.type.name,
title = addressModel.displayName.resolveReference(),
icon = R.drawable.ic_arrow_top_right_24,
onItemsClick = { content.onClick(addressModel) },
)

View file

@ -0,0 +1,43 @@
package com.tangem.core.ui.components.bottomsheets.tokenreceive
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.domain.tokens.model.CryptoCurrency
import com.tangem.domain.tokens.model.Network
import com.tangem.domain.tokens.model.NetworkAddress
private const val DSC_ADDRESS_NAME = "DSC"
private const val DEL_ADDRESS_NAME = "Main"
private const val LEGACY_ADDRESS_NAME = "Legacy"
private const val DEFAULT_ADDRESS_NAME = "Default"
fun Set<NetworkAddress.Address>.mapToAddressModels(currency: CryptoCurrency): List<AddressModel> = this
.sortedBy { it.type.ordinal }
.map { address ->
AddressModel(
displayName = currency.network.getAddressDisplayName(address.type),
value = address.value,
type = when (address.type) {
NetworkAddress.Address.Type.Primary -> AddressModel.Type.Default
NetworkAddress.Address.Type.Secondary -> AddressModel.Type.Legacy
},
)
}
private fun Network.getAddressDisplayName(addressType: NetworkAddress.Address.Type): TextReference {
return when (id.value) {
"decimal", "decimal/test" -> {
when (addressType) {
NetworkAddress.Address.Type.Primary -> stringReference(value = DEL_ADDRESS_NAME)
NetworkAddress.Address.Type.Secondary -> stringReference(value = DSC_ADDRESS_NAME)
}
}
else -> {
when (addressType) {
NetworkAddress.Address.Type.Primary -> stringReference(value = DEFAULT_ADDRESS_NAME)
NetworkAddress.Address.Type.Secondary -> stringReference(value = LEGACY_ADDRESS_NAME)
}
}
}
}

View file

@ -1,8 +1,11 @@
package com.tangem.core.ui.components.bottomsheets.tokenreceive
import com.tangem.core.ui.extensions.TextReference
data class AddressModel(
val displayName: TextReference,
val value: String,
val type: Type = Type.Default,
val type: Type,
) {
enum class Type {
Legacy, Default

View file

@ -9,7 +9,7 @@ import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.*
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -26,6 +26,7 @@ import com.tangem.core.ui.components.SecondaryButtonIconStart
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheet
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig
import com.tangem.core.ui.components.rememberQrPainters
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.shareText
import com.tangem.core.ui.res.TangemTheme
@ -181,13 +182,6 @@ private fun getName(content: TokenReceiveBottomSheetConfig, index: Int): String
return if (content.addresses.size < 2) {
content.name
} else {
"${
stringResource(
id = when (content.addresses[index].type) {
AddressModel.Type.Default -> R.string.address_type_default
AddressModel.Type.Legacy -> R.string.address_type_legacy
},
)
} ${content.name}"
"${content.addresses[index].displayName.resolveReference()} ${content.name}"
}
}

View file

@ -1,12 +1,13 @@
package com.tangem.core.ui.components.bottomsheets.tokenreceive
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent
import kotlinx.collections.immutable.ImmutableList
class TokenReceiveBottomSheetConfig(
val name: String,
val symbol: String,
val network: String,
val addresses: List<AddressModel>,
val addresses: ImmutableList<AddressModel>,
val onCopyClick: () -> Unit,
val onShareClick: () -> Unit,
) : TangemBottomSheetConfigContent

View file

@ -28,7 +28,6 @@ fun getActiveIconRes(blockchainId: String): Int {
"GNO" -> R.drawable.img_gnosis_22
"ETH-Pow", "ETH-Pow/test" -> R.drawable.img_eth_pow_22
"ETH-Fair" -> R.drawable.img_eth_fair_22
"NEAR", "NEAR/test" -> R.drawable.img_near_22
"Polkadot", "Polkadot/test" -> R.drawable.img_polkadot_22
"Kusama" -> R.drawable.img_kusama_22
"OPTIMISM", "OPTIMISM/test" -> R.drawable.img_optimism_22