Updated on 2026-08-14

This commit is contained in:
Tangem 2023-10-20 17:28:11 +08:00
parent 2c9ea54ebc
commit a4e5286779
9 changed files with 52 additions and 11 deletions

View file

@ -3,6 +3,7 @@ package com.tangem.domain.common
import com.tangem.blockchain.common.Blockchain
import com.tangem.blockchain.common.Token
@Suppress("TooManyFunctions")
interface CardTypesResolver {
fun isTangemNote(): Boolean
@ -11,6 +12,12 @@ interface CardTypesResolver {
fun isShibaWallet(): Boolean
fun isTronWallet(): Boolean
fun isKaspaWallet(): Boolean
fun isBadWallet(): Boolean
fun isWhiteWallet(): Boolean
fun isWallet2(): Boolean

View file

@ -12,6 +12,7 @@ import com.tangem.domain.models.scan.CardDTO
import com.tangem.domain.models.scan.ProductType
import com.tangem.operations.attestation.Attestation
@Suppress("TooManyFunctions")
internal class TangemCardTypesResolver(
private val card: CardDTO,
private val productType: ProductType,
@ -29,12 +30,18 @@ internal class TangemCardTypesResolver(
return card.firmwareVersion.compareTo(FirmwareVersion.KeysImportAvailable) == 0
}
override fun isTronWallet(): Boolean = card.batchId == TRON_WALLET_BATCH_ID
override fun isKaspaWallet(): Boolean = card.batchId == KASPA_WALLET_BATCH_ID
override fun isBadWallet(): Boolean = card.batchId == BAD_WALLET_BATCH_ID
override fun isWhiteWallet(): Boolean {
return walletData == null && card.firmwareVersion <= FirmwareVersion.HDWalletAvailable
}
override fun isWallet2(): Boolean {
return card.firmwareVersion >= FirmwareVersion.Ed25519Slip0010Available && card.settings.isKeysImportAllowed
return productType == ProductType.Wallet2
}
override fun isTangemTwins(): Boolean = productType == ProductType.Twins
@ -115,5 +122,8 @@ internal class TangemCardTypesResolver(
private companion object {
const val DEV_KIT_CARD_BATCH_ID = "CB83"
const val TRON_WALLET_BATCH_ID = "AF07"
const val KASPA_WALLET_BATCH_ID = "AF08"
const val BAD_WALLET_BATCH_ID = "AF09"
}
}

View file

@ -22,6 +22,9 @@ internal object WalletImageResolver {
fun resolve(userWallet: UserWallet): Int? {
val cardTypesResolver = userWallet.scanResponse.cardTypesResolver
return when {
cardTypesResolver.isTronWallet() -> userWallet.resolveTronWallet()
cardTypesResolver.isKaspaWallet() -> userWallet.resolveKaspaWallet()
cardTypesResolver.isBadWallet() -> userWallet.resolveBadWallet()
cardTypesResolver.isWallet2() -> userWallet.resolveWallet2()
cardTypesResolver.isShibaWallet() -> userWallet.resolveShibaWallet()
cardTypesResolver.isTangemWallet() -> userWallet.resolveWallet1()
@ -34,24 +37,45 @@ internal object WalletImageResolver {
}
}
private fun UserWallet.resolveWallet2(): Int? {
private fun UserWallet.resolveWallet2(
@DrawableRes oneBackupResId: Int = R.drawable.ill_wallet2_cards2_120_106,
@DrawableRes twoBackupResId: Int = R.drawable.ill_wallet2_cards3_120_106,
): Int? {
return resolveWalletWithBackups { count ->
when (count) {
WALLET_WITH_ONE_BACKUP_COUNT -> R.drawable.ill_wallet2_cards2_120_106
WALLET_WITH_TWO_BACKUPS_COUNT -> R.drawable.ill_wallet2_cards3_120_106
WALLET_WITH_ONE_BACKUP_COUNT -> oneBackupResId
WALLET_WITH_TWO_BACKUPS_COUNT -> twoBackupResId
else -> null
}
}
}
private fun UserWallet.resolveTronWallet(): Int? {
return resolveWallet2(
oneBackupResId = R.drawable.ill_tron_card2_120_106,
twoBackupResId = R.drawable.ill_tron_card3_120_106,
)
}
private fun UserWallet.resolveKaspaWallet(): Int? {
return resolveWallet2(
oneBackupResId = R.drawable.ill_kaspa_card2_120_106,
twoBackupResId = R.drawable.ill_kaspa_card3_120_106,
)
}
private fun UserWallet.resolveBadWallet(): Int? {
return resolveWallet2(
oneBackupResId = R.drawable.ill_bad_card2_120_106,
twoBackupResId = R.drawable.ill_bad_card3_120_106,
)
}
private fun UserWallet.resolveShibaWallet(): Int? {
return resolveWalletWithBackups { count ->
when (count) {
WALLET_WITH_ONE_BACKUP_COUNT -> R.drawable.ill_shiba_card2_120_106
WALLET_WITH_TWO_BACKUPS_COUNT -> R.drawable.ill_shiba_card3_120_106
else -> null
}
}
return resolveWallet2(
oneBackupResId = R.drawable.ill_shiba_card2_120_106,
twoBackupResId = R.drawable.ill_shiba_card3_120_106,
)
}
private fun UserWallet.resolveWallet1(): Int? {

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB