diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 2add9b412a..76a59bafa3 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -173,8 +173,8 @@
-
-
+
+
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/send/redux/SendScreenAction.kt b/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt
index 8c76739e6b..41b3f9d34a 100644
--- a/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt
+++ b/app/src/main/java/com/tangem/tap/features/send/redux/SendScreenAction.kt
@@ -113,15 +113,11 @@ sealed class FeeActionUi : SendScreenActionUi {
}
sealed class FeeAction : SendScreenAction {
- enum class Error {
- ADDRESS_OR_AMOUNT_IS_EMPTY,
- REQUEST_FAILED
- }
object RequestFee : FeeAction()
sealed class FeeCalculation : FeeAction() {
data class SetFeeResult(val fee: List) : FeeCalculation()
- data class SetFeeError(val error: Error) : FeeCalculation()
+ object ClearResult : FeeCalculation()
}
data class ChangeLayoutVisibility(
@@ -160,6 +156,12 @@ sealed class SendAction : SendScreenAction {
data class CardSdkError(val error: TangemSdkError): Dialog()
data class BlockchainSdkError(val error: com.tangem.blockchain.common.BlockchainSdkError): Dialog()
}
+
+ data class RequestFeeError(
+ val error: com.tangem.blockchain.common.BlockchainSdkError,
+ val onRetry: () -> Unit,
+ ) : Dialog()
+
object Hide : Dialog()
}
diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/RequestFeeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/RequestFeeMiddleware.kt
index cd4075a0ca..f73c2c3241 100644
--- a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/RequestFeeMiddleware.kt
+++ b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/RequestFeeMiddleware.kt
@@ -2,6 +2,7 @@ package com.tangem.tap.features.send.redux.middlewares
import com.tangem.blockchain.common.Amount
import com.tangem.blockchain.common.Blockchain
+import com.tangem.blockchain.common.BlockchainSdkError
import com.tangem.blockchain.common.TransactionSender
import com.tangem.blockchain.extensions.Result
import com.tangem.common.extensions.isZero
@@ -31,8 +32,7 @@ class RequestFeeMiddleware {
val scanResponse = appState.globalState.scanResponse ?: return
if (!SendState.isReadyToRequestFee()) {
- dispatch(FeeAction.FeeCalculation.SetFeeError(FeeAction.Error.ADDRESS_OR_AMOUNT_IS_EMPTY))
-// dispatch(FeeAction.ChangeLayoutVisibility(main = false, chipGroup = true))
+ dispatch(FeeAction.FeeCalculation.ClearResult)
dispatch(ReceiptAction.RefreshReceipt)
dispatch(SendAction.ChangeSendButtonState(sendState.getButtonState()))
return
@@ -66,14 +66,21 @@ class RequestFeeMiddleware {
}
}
is Result.Failure -> {
- dispatch(FeeAction.FeeCalculation.SetFeeError(FeeAction.Error.REQUEST_FAILED))
+ dispatch(FeeAction.FeeCalculation.ClearResult)
dispatch(FeeAction.ChangeLayoutVisibility(main = false))
+
+ val blockchainSdkError = feeResult.error as? BlockchainSdkError ?: return@withContext
+ dispatch(
+ SendAction.Dialog.RequestFeeError(
+ error = blockchainSdkError,
+ onRetry = { dispatch(FeeAction.RequestFee) },
+ ),
+ )
}
}
dispatch(AmountActionUi.CheckAmountToSend)
}
}
-
}
}
@@ -93,13 +100,13 @@ class FeeMock {
suspend fun feeStandard(blockchain: Blockchain): List = listOf(
Amount(0.001500.toBigDecimal(), blockchain),
Amount(0.0030.toBigDecimal(), blockchain),
- Amount(0.0045001.toBigDecimal(), blockchain)
+ Amount(0.0045001.toBigDecimal(), blockchain),
)
suspend fun feeStandardBig(blockchain: Blockchain): List = listOf(
Amount(1.76.toBigDecimal(), blockchain),
Amount(2.30.toBigDecimal(), blockchain),
- Amount(3.45.toBigDecimal(), blockchain)
+ Amount(3.45.toBigDecimal(), blockchain),
)
suspend fun feeSingle(blockchain: Blockchain): List = listOf(Amount(0.0015.toBigDecimal(), blockchain))
diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/FeeReducer.kt b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/FeeReducer.kt
index 4c2fae60ba..9965636a49 100644
--- a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/FeeReducer.kt
+++ b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/FeeReducer.kt
@@ -36,7 +36,7 @@ class FeeReducer : SendInternalReducer {
private fun handleAction(action: FeeAction, sendState: SendState, state: FeeState): SendState {
val result = when (action) {
is FeeAction.RequestFee -> {
- state.copy(error = null)
+ state
}
is FeeAction.ChangeLayoutVisibility -> {
fun getVisibility(current: Boolean, proposed: Boolean?): Boolean = proposed ?: current
@@ -56,7 +56,6 @@ class FeeReducer : SendInternalReducer {
selectedFeeType = feeType,
feeList = fees,
currentFee = currentFee,
- error = null,
feeIsApproximate = isFeeApproximate(sendState),
)
} else {
@@ -67,16 +66,14 @@ class FeeReducer : SendInternalReducer {
selectedFeeType = feeType,
feeList = fees,
currentFee = currentFee,
- error = null,
feeIsApproximate = isFeeApproximate(sendState),
)
}
}
- is FeeAction.FeeCalculation.SetFeeError -> {
+ FeeAction.FeeCalculation.ClearResult -> {
state.copy(
feeList = null,
currentFee = null,
- error = action.error,
)
}
}
diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/SendScreenReducer.kt b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/SendScreenReducer.kt
index 07936d3e49..d44a27f0d1 100644
--- a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/SendScreenReducer.kt
+++ b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/SendScreenReducer.kt
@@ -59,10 +59,10 @@ private class SendReducer : SendInternalReducer {
is SendAction.Dialog.TezosWarningDialog -> sendState.copy(dialog = action)
is SendAction.Dialog.SendTransactionFails.CardSdkError -> sendState.copy(dialog = action)
is SendAction.Dialog.SendTransactionFails.BlockchainSdkError -> sendState.copy(dialog = action)
+ is SendAction.Dialog.RequestFeeError -> sendState.copy(dialog = action)
is SendAction.Dialog.Hide -> sendState.copy(dialog = null)
is SendAction.Warnings.Set -> sendState.copy(sendWarningsList = action.warningList)
- is SendAction.SendSpecificTransaction ->
- handleSendSpecificTransactionAction(action, sendState)
+ is SendAction.SendSpecificTransaction -> handleSendSpecificTransactionAction(action, sendState)
else -> return sendState
}
diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/states/FeeState.kt b/app/src/main/java/com/tangem/tap/features/send/redux/states/FeeState.kt
index 4c9818a669..d9b8798a1e 100644
--- a/app/src/main/java/com/tangem/tap/features/send/redux/states/FeeState.kt
+++ b/app/src/main/java/com/tangem/tap/features/send/redux/states/FeeState.kt
@@ -1,7 +1,6 @@
package com.tangem.tap.features.send.redux.states
import com.tangem.blockchain.common.Amount
-import com.tangem.tap.features.send.redux.FeeAction
import java.math.BigDecimal
/**
@@ -21,12 +20,11 @@ data class FeeState(
val controlsLayoutIsVisible: Boolean = false,
val feeChipGroupIsVisible: Boolean = true,
val includeFeeSwitcherIsEnabled: Boolean = true,
- val error: FeeAction.Error? = null,
) : SendScreenState {
override val stateId: StateId = StateId.FEE
- fun isReady(): Boolean = error == null && currentFee != null
+ fun isReady(): Boolean = currentFee != null
fun getCurrentFeeValue(): BigDecimal = currentFee?.value ?: BigDecimal.ZERO
}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/dialogs/RequestFeeErrorDialog.kt b/app/src/main/java/com/tangem/tap/features/send/ui/dialogs/RequestFeeErrorDialog.kt
new file mode 100644
index 0000000000..669ec571f0
--- /dev/null
+++ b/app/src/main/java/com/tangem/tap/features/send/ui/dialogs/RequestFeeErrorDialog.kt
@@ -0,0 +1,32 @@
+package com.tangem.tap.features.send.ui.dialogs
+
+import android.content.Context
+import androidx.appcompat.app.AlertDialog
+import com.tangem.tap.common.feedback.SendTransactionFailedEmail
+import com.tangem.tap.common.redux.global.GlobalAction
+import com.tangem.tap.features.send.redux.SendAction
+import com.tangem.tap.store
+import com.tangem.wallet.R
+
+/**
+[REDACTED_AUTHOR]
+ */
+class RequestFeeErrorDialog {
+
+ companion object {
+ fun create(context: Context, dialog: SendAction.Dialog.RequestFeeError): AlertDialog {
+ val errorMessage = dialog.error.customMessage
+
+ return AlertDialog.Builder(context).apply {
+ setTitle(R.string.send_error_fee_request_failed)
+ setMessage(context.getString(R.string.alert_failed_to_send_transaction_message, errorMessage))
+ setNegativeButton(R.string.alert_button_send_feedback) { _, _ ->
+ store.dispatch(GlobalAction.SendEmail(SendTransactionFailedEmail(errorMessage)))
+ }
+ setPositiveButton(R.string.common_retry) { _, _ -> dialog.onRetry() }
+ setNeutralButton(R.string.common_cancel) { _, _ -> }
+ setOnDismissListener { store.dispatch(SendAction.Dialog.Hide) }
+ }.create()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt b/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt
index 4496bd570b..96624950c0 100644
--- a/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt
+++ b/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt
@@ -20,7 +20,6 @@ import com.tangem.tap.domain.MultiMessageError
import com.tangem.tap.domain.assembleErrors
import com.tangem.tap.features.BaseStoreFragment
import com.tangem.tap.features.send.redux.AddressPayIdVerifyAction.Error
-import com.tangem.tap.features.send.redux.FeeAction
import com.tangem.tap.features.send.redux.SendAction
import com.tangem.tap.features.send.redux.states.AddressPayIdState
import com.tangem.tap.features.send.redux.states.AmountState
@@ -35,12 +34,12 @@ import com.tangem.tap.features.send.redux.states.TransactionExtrasState
import com.tangem.tap.features.send.redux.states.XlmMemoType
import com.tangem.tap.features.send.ui.FeeUiHelper
import com.tangem.tap.features.send.ui.SendFragment
+import com.tangem.tap.features.send.ui.dialogs.RequestFeeErrorDialog
import com.tangem.tap.features.send.ui.dialogs.SendTransactionFailsDialog
import com.tangem.tap.features.send.ui.dialogs.TezosWarningDialog
import com.tangem.tap.features.wallet.redux.WalletState.Companion.ROUGH_SIGN
import com.tangem.tap.features.wallet.redux.WalletState.Companion.UNKNOWN_AMOUNT_SIGN
import com.tangem.tap.features.wallet.ui.adapters.WarningMessagesAdapter
-import com.tangem.tap.store
import com.tangem.wallet.R
/**
@@ -62,10 +61,7 @@ class SendStateSubscriber(fragment: BaseStoreFragment) :
when (it) {
StateId.SEND_SCREEN -> handleSendScreen(fg, state)
StateId.ADDRESS_PAY_ID -> handleAddressPayIdState(fg, state.addressPayIdState)
- StateId.TRANSACTION_EXTRAS -> handleTransactionExtrasState(
- fg,
- state.transactionExtrasState
- )
+ StateId.TRANSACTION_EXTRAS -> handleTransactionExtrasState(fg, state.transactionExtrasState)
StateId.AMOUNT -> handleAmountState(fg, state.amountState)
StateId.FEE -> handleFeeState(fg, state.feeState)
StateId.RECEIPT -> handleReceiptState(fg, state.receiptState)
@@ -144,6 +140,12 @@ class SendStateSubscriber(fragment: BaseStoreFragment) :
dialog?.show()
}
}
+ is SendAction.Dialog.RequestFeeError -> {
+ if (dialog == null) {
+ dialog = RequestFeeErrorDialog.create(fg.requireContext(), state.dialog)
+ dialog?.show()
+ }
+ }
else -> {
dialog?.dismiss()
dialog = null
@@ -161,7 +163,7 @@ class SendStateSubscriber(fragment: BaseStoreFragment) :
toolbar.title = fg.getString(
R.string.send_title_currency_format,
- state.amountState.mainCurrency.currencySymbol
+ state.amountState.mainCurrency.currencySymbol,
)
}
@@ -233,11 +235,11 @@ class SendStateSubscriber(fragment: BaseStoreFragment) :
val balanceText = when (state.mainCurrency.type) {
MainCurrencyType.FIAT -> fg.getString(
R.string.send_balance_subtitle_format,
- state.viewBalanceValue, state.mainCurrency.currencySymbol
+ state.viewBalanceValue, state.mainCurrency.currencySymbol,
).remove(":")
MainCurrencyType.CRYPTO -> fg.getString(
R.string.send_balance_subtitle_format,
- state.mainCurrency.currencySymbol, state.viewBalanceValue
+ state.mainCurrency.currencySymbol, state.viewBalanceValue,
)
}
@@ -263,14 +265,6 @@ class SendStateSubscriber(fragment: BaseStoreFragment) :
swIncludeFee.isChecked = state.feeIsIncluded
}
- if (state.error == FeeAction.Error.REQUEST_FAILED) {
- fg.showRetrySnackbar(
- fg.requireContext().getString(R.string.send_error_fee_request_failed)
- ) {
- store.dispatch(FeeAction.RequestFee)
- }
- }
-
val chipId = FeeUiHelper.toId(state.selectedFeeType)
if (chipGroup.checkedChipId != chipId && chipId != View.NO_ID) chipGroup.check(chipId)
}
@@ -299,7 +293,7 @@ class SendStateSubscriber(fragment: BaseStoreFragment) :
val willSent = getString(
R.string.send_total_subtitle_format,
- receipt.willSentCrypto, receipt.symbols.crypto
+ receipt.willSentCrypto, receipt.symbols.crypto,
)
llTotalContainer.tvWillBeSentValue.update(willSent)
@@ -334,7 +328,7 @@ class SendStateSubscriber(fragment: BaseStoreFragment) :
val willSent = getString(
R.string.send_total_subtitle_asset_format,
receipt.symbols.token ?: "", receipt.willSentToken,
- receipt.symbols.crypto, receipt.willSentFeeCoin
+ receipt.symbols.crypto, receipt.willSentFeeCoin,
)
llTotalContainer.tvWillBeSentValue.update(willSent)
}
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt
index ab07dd33d5..db9173e486 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletDetailsFragment.kt
@@ -41,6 +41,7 @@ import com.tangem.tap.features.wallet.redux.WalletState
import com.tangem.tap.features.wallet.redux.WalletState.Companion.UNKNOWN_AMOUNT_SIGN
import com.tangem.tap.features.wallet.ui.adapters.PendingTransactionsAdapter
import com.tangem.tap.features.wallet.ui.adapters.WalletDetailWarningMessagesAdapter
+import com.tangem.tap.features.wallet.ui.images.load
import com.tangem.tap.features.wallet.ui.test.TestWalletDetails
import com.tangem.tap.store
import com.tangem.wallet.R
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WalletAdapter.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WalletAdapter.kt
index 9092292f99..af061d48f1 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WalletAdapter.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WalletAdapter.kt
@@ -15,6 +15,7 @@ import com.tangem.tap.common.extensions.show
import com.tangem.tap.features.wallet.redux.WalletAction
import com.tangem.tap.features.wallet.redux.WalletData
import com.tangem.tap.features.wallet.ui.BalanceStatus
+import com.tangem.tap.features.wallet.ui.images.load
import com.tangem.tap.store
import com.tangem.wallet.R
import com.tangem.wallet.databinding.ItemCurrencyWalletBinding
@@ -62,7 +63,7 @@ class WalletAdapter
fun bind(wallet: WalletData) = with(binding) {
val status = wallet.currencyData.status
// Skip changes when on refreshing status
- if (status == BalanceStatus.Refreshing || wallet.fiatRateString == null) return@with
+ if (status == BalanceStatus.Refreshing) return@with
val statusMessage = when (status) {
BalanceStatus.TransactionInProgress -> {
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..8bf8cebcf1 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
@@ -25,46 +23,50 @@ class CurrencyIconView @JvmOverloads constructor(
this,
)
- private val currencyImageView: ImageFilterView
+ val currencyImageView: ImageFilterView
get() = binding.ivCurrency
- private val currencyTextView: TextView
+ val currencyTextView: TextView
get() = binding.tvTokenLetter
- private var isBlockchainIconVisible: Boolean
- get() = binding.ivBlockchain.isVisible
- set(value) = binding.ivBlockchain::isVisible.set(value)
+ val blockchainBadge: ImageFilterView
+ get() = binding.ivBlockchainBadge
- private var isBadgeVisible: Boolean
- get() = binding.badge.isVisible
- set(value) = binding.badge::isVisible.set(value)
+ var isBlockchainBadgeVisible: Boolean
+ get() = binding.ivBlockchainBadge.isVisible
+ set(value) = binding.ivBlockchainBadge::isVisible.set(value)
- @DrawableRes
- private var blockchainIconRes: Int? = null
- set(value) {
- if (value != null && value != field && isBlockchainIconVisible) {
- binding.ivBlockchain.setImageResource(value)
- field = value
- }
- }
+ var isCustomCurrencyBadgeVisible: Boolean
+ get() = binding.customBadge.isVisible
+ set(value) = binding.customBadge::isVisible.set(value)
init {
minWidth = dpToPx(48f).roundToInt()
minHeight = dpToPx(48f).roundToInt()
}
+}
- fun load(
- currency: Currency,
- derivationStyle: DerivationStyle?,
- ) {
- isBlockchainIconVisible = currency.isToken()
- isBadgeVisible = currency.isCustomCurrency(derivationStyle)
- blockchainIconRes = currency.blockchain.getRoundIconRes()
+fun CurrencyIconView.load(
+ currency: Currency,
+ derivationStyle: DerivationStyle?,
+) {
+ isCustomCurrencyBadgeVisible = currency.isCustomCurrency(derivationStyle)
+
+ CurrencyIconRequest(
+ currencyImageView = currencyImageView,
+ currencyTextView = currencyTextView,
+ 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 = currencyImageView,
- currencyTextView = currencyTextView,
- token = (currency as? Currency.Token)?.token,
+ currencyImageView = blockchainBadge,
+ currencyTextView = null,
+ token = null,
blockchain = currency.blockchain,
).load()
}
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" />
-