From 53e179e0918f6384e0f07c3ded3d647ba7b2709e Mon Sep 17 00:00:00 2001 From: Tangem Date: Sat, 18 Feb 2023 19:32:22 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/common/extensions/ImageRequest.kt | 32 +++++++++++++++++++ .../model/builders/UserWalletBuilder.kt | 2 ++ .../tap/features/wallet/redux/WalletState.kt | 1 + .../ui/components/WalletItem.kt | 13 ++++++-- .../tangem/domain/common/SaltPayWorkaround.kt | 2 ++ 5 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/common/extensions/ImageRequest.kt diff --git a/app/src/main/java/com/tangem/tap/common/extensions/ImageRequest.kt b/app/src/main/java/com/tangem/tap/common/extensions/ImageRequest.kt new file mode 100644 index 0000000000..9da1448d9c --- /dev/null +++ b/app/src/main/java/com/tangem/tap/common/extensions/ImageRequest.kt @@ -0,0 +1,32 @@ +package com.tangem.tap.common.extensions + +import android.widget.ImageView +import coil.ImageLoader +import coil.imageLoader +import coil.load +import coil.request.Disposable +import coil.request.ImageRequest +import com.tangem.tap.features.wallet.redux.Artwork +import com.tangem.wallet.R + +/** +[REDACTED_AUTHOR] + */ +fun ImageRequest.Builder.cardImageData(any: Any?): ImageRequest.Builder = apply { + data(any?.parseData()) +} + +fun ImageView.loadCardImage( + data: Any?, + imageLoader: ImageLoader = context.imageLoader, + builder: ImageRequest.Builder.() -> Unit = {}, +): Disposable = this.load( + data = data?.parseData(), + imageLoader = imageLoader, + builder = builder, +) + +private fun Any?.parseData(): Any? = when { + this is String && this == Artwork.SALT_PAY_URL -> R.drawable.img_salt_pay_visa + else -> this +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/model/builders/UserWalletBuilder.kt b/app/src/main/java/com/tangem/tap/domain/model/builders/UserWalletBuilder.kt index 22cc834b2a..b5dff3de1f 100644 --- a/app/src/main/java/com/tangem/tap/domain/model/builders/UserWalletBuilder.kt +++ b/app/src/main/java/com/tangem/tap/domain/model/builders/UserWalletBuilder.kt @@ -6,6 +6,7 @@ import com.tangem.common.extensions.toHexString import com.tangem.common.services.Result import com.tangem.domain.common.CardDTO import com.tangem.domain.common.ProductType +import com.tangem.domain.common.SaltPayWorkaround import com.tangem.domain.common.ScanResponse import com.tangem.domain.common.TapWorkarounds.isStart2Coin import com.tangem.domain.common.TwinCardNumber @@ -96,6 +97,7 @@ class UserWalletBuilder( return when { cardId.startsWith(Artwork.SERGIO_CARD_ID) -> Artwork.SERGIO_CARD_URL cardId.startsWith(Artwork.MARTA_CARD_ID) -> Artwork.MARTA_CARD_URL + SaltPayWorkaround.isSaltPayCardId(cardId) -> Artwork.SALT_PAY_URL else -> when (TwinsHelper.getTwinCardNumber(cardId)) { TwinCardNumber.First -> Artwork.TWIN_CARD_1 TwinCardNumber.Second -> Artwork.TWIN_CARD_2 diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt index 93bc2c36fd..7e7f8cc3c2 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt @@ -321,6 +321,7 @@ data class Artwork( const val MARTA_CARD_ID = "BC02" const val TWIN_CARD_1 = "https://app.tangem.com/cards/card_tg085.png" const val TWIN_CARD_2 = "https://app.tangem.com/cards/card_tg086.png" + const val SALT_PAY_URL = "key_for_switch_url_to_drawableId_of_salt_pay_card" } } diff --git a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WalletItem.kt b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WalletItem.kt index 6e67669815..cc02374081 100644 --- a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WalletItem.kt +++ b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WalletItem.kt @@ -4,7 +4,15 @@ import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.Icon import androidx.compose.material.Text @@ -30,6 +38,7 @@ import com.tangem.core.ui.components.SpacerW8 import com.tangem.core.ui.res.TangemTheme import com.tangem.domain.common.util.UserWalletId import com.tangem.tap.common.compose.TangemTypography +import com.tangem.tap.common.extensions.cardImageData import com.tangem.tap.features.walletSelector.ui.model.MultiCurrencyUserWalletItem import com.tangem.tap.features.walletSelector.ui.model.SingleCurrencyUserWalletItem import com.tangem.tap.features.walletSelector.ui.model.UserWalletItem @@ -107,7 +116,7 @@ private fun WalletCardImage( SubcomposeAsyncImage( modifier = cardImageModifier, model = ImageRequest.Builder(LocalContext.current) - .data(cardImageUrl) + .cardImageData(cardImageUrl) .crossfade(true) .build(), loading = { CardImageShimmer(modifier = cardImageModifier) }, diff --git a/domain/src/main/java/com/tangem/domain/common/SaltPayWorkaround.kt b/domain/src/main/java/com/tangem/domain/common/SaltPayWorkaround.kt index 1328643534..4e7be3e411 100644 --- a/domain/src/main/java/com/tangem/domain/common/SaltPayWorkaround.kt +++ b/domain/src/main/java/com/tangem/domain/common/SaltPayWorkaround.kt @@ -19,6 +19,8 @@ object SaltPayWorkaround { } } + fun isSaltPayCardId(cardId: String): Boolean = isVisaBatchId(cardId.take(4)) || isWalletCardId(cardId) + fun isVisaBatchId(batchId: String): Boolean = visaBatches.contains(batchId) fun isWalletCardId(cardId: String): Boolean {