diff --git a/app/src/main/java/com/tangem/tap/common/extensions/Token.kt b/app/src/main/java/com/tangem/tap/common/extensions/Token.kt
index 10897bc069..59c918d736 100644
--- a/app/src/main/java/com/tangem/tap/common/extensions/Token.kt
+++ b/app/src/main/java/com/tangem/tap/common/extensions/Token.kt
@@ -5,19 +5,23 @@ import androidx.annotation.ColorInt
import androidx.core.graphics.luminance
import androidx.core.graphics.toColorInt
import com.tangem.blockchain.common.Token
-import com.tangem.wallet.R
@ColorInt
-fun Token.getColor(): Int {
- return try {
- ("#" + this.contractAddress.subSequence(2..7).toString())
- .toColorInt()
+fun Token.getColor(isTestnet: Boolean = false): Int {
+ val defaultColor = "#C7C7CC".toColorInt() // equivalent to R.color.lightGray4
+
+ return if (isTestnet)
+ defaultColor
+ else try {
+ ("#" + this.contractAddress.subSequence(2..7).toString()).toColorInt()
} catch (exception: Exception) {
- R.color.lightGray4
+ defaultColor
}
}
@ColorInt
-fun Token.getTextColor(): Int {
- return if (this.getColor().luminance > 0.5) Color.BLACK else Color.WHITE
+fun Token.getTextColor(isTestnet: Boolean = false): Int = when {
+ isTestnet -> Color.WHITE
+ this.getColor().luminance > 0.5 -> Color.BLACK
+ else -> Color.WHITE
}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconRequest.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconRequest.kt
index cd7959319e..62f015909c 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconRequest.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconRequest.kt
@@ -21,7 +21,7 @@ private const val VOYR = "VOYRME"
class CurrencyIconRequest(
private val currencyImageView: ImageFilterView,
- private val currencyTextView: TextView,
+ private val currencyTextView: TextView?,
private val token: Token?,
private val blockchain: Blockchain,
) {
@@ -38,7 +38,7 @@ class CurrencyIconRequest(
loadBlockchainIconBase(
onStart = {
currencyImageView.colorFilter = null
- }
+ },
)
}
@@ -46,7 +46,7 @@ class CurrencyIconRequest(
loadBlockchainIconBase(
onStart = {
currencyImageView.saturation = 0f
- }
+ },
)
}
@@ -57,7 +57,11 @@ class CurrencyIconRequest(
},
onSuccess = {
currencyImageView.colorFilter = null
- }
+ },
+ onError = {
+ currencyImageView.setColorFilter(it.getColor())
+ currencyTextView?.setTextColor(it.getTextColor())
+ },
)
}
@@ -65,7 +69,12 @@ class CurrencyIconRequest(
loadTokenIconBase(
onStart = {
currencyImageView.saturation = 0f
- }
+ },
+ onError = {
+ currencyImageView.saturation = 0f
+ currencyImageView.setColorFilter(it.getColor(true))
+ currencyTextView?.setTextColor(it.getTextColor(true))
+ },
)
}
@@ -94,15 +103,19 @@ class CurrencyIconRequest(
data = getTokenIcon(token, blockchain),
placeholderRes = R.drawable.shape_circle,
onStart = {
- currencyTextView.text = token.symbol.take(1)
- currencyTextView.setTextColor(token.getTextColor())
+ currencyTextView?.text = token.name.take(1)
+ currencyTextView?.setTextColor(token.getTextColor())
onStart(token)
},
onSuccess = {
- currencyTextView.text = null
+ currencyTextView?.text = null
onSuccess(token)
},
- onError = { onError(token) },
+ onError = {
+ // for some reason the onStart doesn't call if an error occurs
+ currencyTextView?.text = token.name.take(1)
+ onError(token)
+ },
)
}
}
@@ -122,7 +135,7 @@ private inline fun ImageView.loadIcon(
.listener(
onStart = { onStart() },
onSuccess = { _, _ -> onSuccess() },
- onError = { _, _ -> onError() }
+ onError = { _, _ -> onError() },
)
.target(imageView = this)
.build()
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconView.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconView.kt
index ec9ff38519..bc31d17000 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconView.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconView.kt
@@ -4,13 +4,11 @@ import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.TextView
-import androidx.annotation.DrawableRes
import androidx.constraintlayout.utils.widget.ImageFilterView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
import com.tangem.blockchain.common.DerivationStyle
import com.tangem.tangem_sdk_new.extensions.dpToPx
-import com.tangem.tap.common.extensions.getRoundIconRes
import com.tangem.tap.features.wallet.models.Currency
import com.tangem.wallet.databinding.ViewCurrencyIconBinding
import kotlin.math.roundToInt
@@ -31,22 +29,13 @@ class CurrencyIconView @JvmOverloads constructor(
private val currencyTextView: TextView
get() = binding.tvTokenLetter
- private var isBlockchainIconVisible: Boolean
- get() = binding.ivBlockchain.isVisible
- set(value) = binding.ivBlockchain::isVisible.set(value)
+ private var isBlockchainBadgeVisible: Boolean
+ get() = binding.ivBlockchainBadge.isVisible
+ set(value) = binding.ivBlockchainBadge::isVisible.set(value)
- private var isBadgeVisible: Boolean
- get() = binding.badge.isVisible
- set(value) = binding.badge::isVisible.set(value)
-
- @DrawableRes
- private var blockchainIconRes: Int? = null
- set(value) {
- if (value != null && value != field && isBlockchainIconVisible) {
- binding.ivBlockchain.setImageResource(value)
- field = value
- }
- }
+ private var isCustomCurrencyBadgeVisible: Boolean
+ get() = binding.customBadge.isVisible
+ set(value) = binding.customBadge::isVisible.set(value)
init {
minWidth = dpToPx(48f).roundToInt()
@@ -57,9 +46,7 @@ class CurrencyIconView @JvmOverloads constructor(
currency: Currency,
derivationStyle: DerivationStyle?,
) {
- isBlockchainIconVisible = currency.isToken()
- isBadgeVisible = currency.isCustomCurrency(derivationStyle)
- blockchainIconRes = currency.blockchain.getRoundIconRes()
+ isCustomCurrencyBadgeVisible = currency.isCustomCurrency(derivationStyle)
CurrencyIconRequest(
currencyImageView = currencyImageView,
@@ -67,5 +54,17 @@ class CurrencyIconView @JvmOverloads constructor(
token = (currency as? Currency.Token)?.token,
blockchain = currency.blockchain,
).load()
+
+ if (currency.isToken()) {
+ // load a blockchain icon into the blockchain badge
+ isBlockchainBadgeVisible = true
+
+ CurrencyIconRequest(
+ currencyImageView = binding.ivBlockchainBadge,
+ currencyTextView = null,
+ token = null,
+ blockchain = currency.blockchain,
+ ).load()
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_currency_icon.xml b/app/src/main/res/layout/view_currency_icon.xml
index 801ac76c97..aa1330c398 100644
--- a/app/src/main/res/layout/view_currency_icon.xml
+++ b/app/src/main/res/layout/view_currency_icon.xml
@@ -35,12 +35,13 @@
android:textColor="@android:color/white"
android:textSize="25sp"
android:textStyle="bold"
+ android:translationY="-1dp"
tools:text="J" />
-