From e803ab0d7d08ebe0377ceafa204d1de28ffa8f01 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 4 Aug 2025 12:11:22 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../blockaid/models/response/AssetDiff.kt | 4 +- .../blockaid/models/response/Exposure.kt | 6 ++- core/res/src/main/res/values-fr/strings.xml | 52 +++++++++++++++++++ core/res/src/main/res/values/strings.xml | 2 + .../tangem/data/blockaid/BlockAidMapper.kt | 20 +++---- .../data/blockaid/BlockAidMapperTest.kt | 4 +- .../network/ethereum/WcEthTxHelper.kt | 2 +- .../transaction/simultation/SimulationData.kt | 5 ++ .../WcSendReceiveTransactionCheckResultsUM.kt | 1 + .../blockaid/TransactionCheckResultsItem.kt | 5 +- ...EstimatedWalletChangesNotificationItem.kt} | 12 +++-- .../WcSendAndReceiveBlockAidUiConverter.kt | 14 +++-- 12 files changed, 103 insertions(+), 24 deletions(-) rename features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/{WcEstimatedWalletChangesNotLoadedItem.kt => WcEstimatedWalletChangesNotificationItem.kt} (82%) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/blockaid/models/response/AssetDiff.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/blockaid/models/response/AssetDiff.kt index 51e5374ae8..be70cd4a52 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/blockaid/models/response/AssetDiff.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/blockaid/models/response/AssetDiff.kt @@ -15,8 +15,8 @@ data class AssetDiff( data class Asset( @Json(name = "chain_id") val chainId: Int? = null, @Json(name = "logo_url") val logoUrl: String? = null, - @Json(name = "symbol") val symbol: String, - @Json(name = "decimals") val decimals: Int, + @Json(name = "symbol") val symbol: String? = null, + @Json(name = "decimals") val decimals: Int? = null, ) @JsonClass(generateAdapter = true) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/blockaid/models/response/Exposure.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/blockaid/models/response/Exposure.kt index 0ed36e6a25..e776056d4c 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/blockaid/models/response/Exposure.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/blockaid/models/response/Exposure.kt @@ -18,6 +18,8 @@ data class SpenderDetails( @JsonClass(generateAdapter = true) data class ExposureDetail( - @Json(name = "value") val value: String, - @Json(name = "raw_value") val rawValue: String, + @Json(name = "value") val value: String? = null, + @Json(name = "raw_value") val rawValue: String? = null, + @Json(name = "token_id") val tokenId: String? = null, + @Json(name = "logo_url") val logoUrl: String? = null, ) \ No newline at end of file diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index 075f05f465..b28e3174c2 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -66,6 +66,10 @@ %d carte %d cartes + + %s token + %s tokens + Désactivez cette option si vous ne voulez pas que cette carte soit utilisée pour réinitialiser les codes d\'accès sur d\'autres cartes de ce portefeuille. Veuillez noter que cela vous empêchera également de réinitialiser le code d\'accès sur cette carte. Vous permet d\'utiliser cette carte pour réinitialiser le code d\'accès sur d\'autres cartes de ce portefeuille Récupération du code d\'accès @@ -111,6 +115,7 @@ Annuler Changez Choisissez une action + Choisissez le réseau Choisir le jeton Réclamer Réclamez des récompenses @@ -152,6 +157,7 @@ Synchroniser les adresses Aller au fournisseur Aller au jeton + Compris Cacher heure Importez @@ -196,6 +202,7 @@ Le serveur n\'est pas disponible, veuillez réessayer plus tard Partager Partager le lien + Afficher moins Afficher plus Signez Signez et envoyez @@ -205,6 +212,7 @@ Soumettre Avec succès Support + Réseaux pris en charge Échanger termes et conditions Conditions d\'utilisation @@ -265,6 +273,7 @@ %s hashes ID de l\'appareil Contactez l\'équipe de support + Ouvrir le chat d\'assistance Lier plus de cartes Monnaie de l\'application Retourner pour masquer les soldes @@ -281,6 +290,7 @@ Ne peut pas être échangé contre %s Fourni par Statut + Choisir un fournisseur Tangem propose des échanges de jetons via des fournisseurs tiers selon les conditions de chaque fournisseur Fournisseur Une erreur s\'est produite. Code : %s @@ -340,6 +350,9 @@ Masquer cette transaction Une fois masqué, le statut de la transaction ne peut plus être consulté. Vous pouvez simplement faire glisser votre doigt pour le fermer. Masquer le statut de la transaction ? + Ce jeton n\'est pas pris en charge. Veuillez choisir un autre jeton à échanger. + %s n\'est pas pris en charge + Échanger avec Aucun jeton trouvé. Veuillez essayer une autre demande ID : %s ID de transaction copié @@ -367,6 +380,8 @@ Pour continuer, accordez aux smart contracts de %1s l\'autorisation d\'utiliser votre %2s Donner l\'autorisation Illimité + Ajouter un Portefeuille existant + Créer un nouveau Portefeuille Commandez Scannez à %s @@ -423,6 +438,7 @@ Cet actif n\'est pas pris en charge dans le portefeuille Cet actif n\'est pas disponible pour ce portefeuille Ajoutez un jeton + APY %s Réseaux disponibles Mon portfolio Marché @@ -709,6 +725,7 @@ Paramètres Activer les notifications Recevez des alertes pour les transactions entrantes sur les réseaux pris en charge. + Notifications de transaction Sélectionnez dans la galerie Paramètres Vous n\'avez pas donné accès à votre caméra @@ -818,6 +835,9 @@ Mémo : %s Mémo invalide Couverture des frais de réseau + Nonce + Numéro unique pour chaque transaction. Utilisez-le pour renvoyer ou annuler une transaction en attente. + Entrez le nonce… Fonds insuffisants pour le transfert, car le total des frais et du montant du transfert dépasse le solde existant Le total dépasse le solde Un solde d\'au moins %s est requis pour conserver votre compte sur la blockchain afin d\'éviter les risques de sécurité. Ce montant restera sur votre solde et ne pourra pas être retiré. @@ -847,6 +867,7 @@ Adresse non valide Assurez-vous que l\'adresse du portefeuille de réception est sur le réseau %s pour éviter de perdre vos jetons envoyer à %s + Assurez-vous de %s une adresse réseau, car des erreurs peuvent entraîner des transferts perdus Envoyer à Un Memo/Destination Tag est un identifiant unique permettant de différencier les transactions envoyées au même destinataire sur le même réseau. Attention : L\'omission d\'un mémo peut entraîner des fonds mal placés Le Memo / Destination Tag est un code qui distingue les transactions envoyées à un destinataire partagé sur un réseau crypto. @@ -873,7 +894,11 @@ Les frais de commissions dépassent le solde Le total dépasse le solde Échanger et envoyer + Envoyez n\'importe quel jeton et nous le convertirons en cours de route. Votre destinataire reçoit exactement ce dont il a besoin, en toute simplicité. + Le destinataire recevra + Un destinataire sera envoyé Montant à recevoir + Envoyer avec swap Transaction envoyée Scannez la carte/ bague que vous souhaitez configurer. Oublier le portefeuille @@ -1014,6 +1039,7 @@ Compatible avec Web 3.0 Une transaction entrante d\'au moins de %1$s est requise pour continuer Fonds insuffisants + Taux fixe Le réseau facturera des frais d\'approbation de jeton pour vérifier que vous autorisez l\'utilisation de votre jeton pour l\'échange. Échangez plus de jetons à de meilleurs taux directement dans votre portefeuille. Nouveau fournisseur d\'échange disponible ! @@ -1091,6 +1117,8 @@ Notifications de transaction Minimum %s Le montant minimum pour effectuer cette transaction est %1$s. + Les frais de réseau Tron pour les jetons populaires peuvent être plus élevés. Le staking de TRX peut contribuer à réduire les coûts de transaction. + Économisez sur les frais de réseau Tron Réessayez Vous avez scanné la même carte. Pour créer un portefeuille jumeau, vous devez scanner la carte portant le numéro %d Vous avez scanné une mauvaise carte jumelle. S\'il vous plaît, essayez-en un autre @@ -1103,6 +1131,8 @@ Tangem Twin Cette action est irréversible. Vous n\'aurez plus accès à l\'ancien portefeuille. Appuyez sur la carte jumelle avec le numéro %s et ne la retirez pas jusqu\'à la fin de l\'opération + Veuillez réessayer ultérieurement. Si le problème persiste, veuillez contacter le support. + Une erreur s\'est produite ! Nous avons rencontré une erreur. Code d\'erreur : %s. Veuillez contacter notre équipe de support. Utilisez %s ou scannez une carte/bague pour avoir accès à votre portefeuille Échec de la connexion : Cette dApp utilise Wallet Connect version1.0, qui n\'est pas prise en charge. Veuillez vous assurer que la dApp prend en charge Wallet Connect version2.0 pour réussir la connexion. @@ -1253,6 +1283,7 @@ Votre avis nous motive à améliorer encore le Portefeuille Tangem Vous appréciez Tangem ? Vous devez associer votre jeton avant de recevoir des jetons + Vous devez ouvrir la ligne de confiance pour votre jeton avant de le recevoir Frais de location de réseau requis Action requise Avez-vous contacté l\'assistance via l\'application ou par e-mail dans les 7 jours suivant la création d\'un portefeuille ? Si vous l\'avez fait ou si vous n\'êtes pas sûr, suivez et complétez les instructions. @@ -1273,17 +1304,38 @@ À des fins de test uniquement Le solde peut être obsolète. Rafraîchissez la page. Pas assez de %1$s. Rechargez votre compte %2$s pour associer ce jeton. + Activer Trustline + Une Trustline doit être activée pour recevoir ce jeton. Le réseau requiert une réserve de %1$s %2$s + Trustline requise Domaine malveillant + Signer quand même Si le problème persiste, n’hésitez pas à contacter notre support. Le portefeuille Tangem ne prend actuellement pas en charge %ss dApp non prise en charge + Code d\'erreur : 8 005. Si le problème persiste, n\'hésitez pas à contacter notre support. + Nous avons rencontré une erreur inconnue + Autoriser à dépenser + Adresse + Chargement + Illimité Connexions + Contenu + Copier les données Déconnecter tout Texte sur la déconnexion de toutes les dApps Déconnecter toutes les dApps + Modifications estimées du portefeuille + La transaction n\'a pas pu être simulée. Veuillez procéder avec prudence. + Transaction malveillante Nouvelle connexion Connectez votre portefeuille à différentes dApps Aucune séance + Demande de + Type de signature + À + Demande de transaction + Demande de transaction + Montant illimité Ignorer Vous avez une sauvegarde interrompue. Voulez-vous la reprendre ? Oui, reprendre diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 18834e5cbc..704c48f319 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -12,6 +12,7 @@ Set a %s-digit Access Code to unlock your wallet. Create Access Code Access code + Account name Can’t find your token? Go to the Market section on the main page and add it to your portfolio for purchase Can’t find your token? Go to the Market section on the main page and add it to your portfolio for selling. Sell @@ -1500,6 +1501,7 @@ New connection Connect your wallet to a different dApps No sessions + No wallet changes detected This domain is flagged as unsafe by multiple security providers. Leave immediately to protect your assets Known security risk Request from diff --git a/data/blockaid/src/main/kotlin/com/tangem/data/blockaid/BlockAidMapper.kt b/data/blockaid/src/main/kotlin/com/tangem/data/blockaid/BlockAidMapper.kt index 857ec25986..128d1cfd56 100644 --- a/data/blockaid/src/main/kotlin/com/tangem/data/blockaid/BlockAidMapper.kt +++ b/data/blockaid/src/main/kotlin/com/tangem/data/blockaid/BlockAidMapper.kt @@ -85,7 +85,7 @@ internal object BlockAidMapper { from.exposures, ) !from.traces.isNullOrEmpty() -> mapNftSendReceiveTransaction(from.traces) - else -> SimulationResult.FailedToSimulate + else -> SimulationResult.Success(data = SimulationData.NoWalletChangesDetected) } } @@ -94,15 +94,15 @@ internal object BlockAidMapper { val tokenInfo = TokenInfo( chainId = exposure.asset.chainId, logoUrl = exposure.asset.logoUrl, - symbol = exposure.asset.symbol, - decimals = exposure.asset.decimals, + symbol = exposure.asset.symbol ?: "", + decimals = exposure.asset.decimals ?: 0, ) exposure.spenders.flatMap { (_, spender) -> val isUnlimited = spender.isApprovedForAll == true val approval = spender.approval?.hexToBigDecimal() - spender.exposure.mapNotNull { detail -> + spender.exposure.map { detail -> ApprovedAmount( - approvedAmount = detail.value.toBigDecimalOrNull() ?: approval ?: return@mapNotNull null, + approvedAmount = detail.value?.toBigDecimalOrNull() ?: approval ?: 1.toBigDecimal(), isUnlimited = isUnlimited, tokenInfo = tokenInfo, ) @@ -112,7 +112,7 @@ internal object BlockAidMapper { return if (!amounts.isNullOrEmpty()) { SimulationResult.Success(SimulationData.Approve(amounts)) } else { - SimulationResult.FailedToSimulate + SimulationResult.Success(SimulationData.NoWalletChangesDetected) } } @@ -124,8 +124,8 @@ internal object BlockAidMapper { val token = TokenInfo( chainId = diff.asset.chainId, logoUrl = diff.asset.logoUrl, - symbol = diff.asset.symbol, - decimals = diff.asset.decimals, + symbol = diff.asset.symbol ?: "", + decimals = diff.asset.decimals ?: 0, ) diff.outTransfer.orEmpty().forEach { transfer -> transfer.value?.toBigDecimalOrNull()?.let { amount -> @@ -142,7 +142,7 @@ internal object BlockAidMapper { return if (sendInfo.isNotEmpty() || receiveInfo.isNotEmpty()) { SimulationResult.Success(SimulationData.SendAndReceive(send = sendInfo, receive = receiveInfo)) } else { - SimulationResult.FailedToSimulate + SimulationResult.Success(SimulationData.NoWalletChangesDetected) } } @@ -156,7 +156,7 @@ internal object BlockAidMapper { return if (!sendInfo.isNullOrEmpty()) { SimulationResult.Success(SimulationData.SendAndReceive(send = sendInfo, receive = listOf())) } else { - SimulationResult.FailedToSimulate + SimulationResult.Success(SimulationData.NoWalletChangesDetected) } } } \ No newline at end of file diff --git a/data/blockaid/src/test/kotlin/com/tangem/data/blockaid/BlockAidMapperTest.kt b/data/blockaid/src/test/kotlin/com/tangem/data/blockaid/BlockAidMapperTest.kt index 1980d63605..00dd54e198 100644 --- a/data/blockaid/src/test/kotlin/com/tangem/data/blockaid/BlockAidMapperTest.kt +++ b/data/blockaid/src/test/kotlin/com/tangem/data/blockaid/BlockAidMapperTest.kt @@ -114,7 +114,7 @@ class BlockAidMapperTest { val result = mapper.mapToDomain(response) Truth.assertThat(result.validation).isEqualTo(ValidationResult.FAILED_TO_VALIDATE) - Truth.assertThat(result.simulation is SimulationResult.FailedToSimulate).isTrue() + Truth.assertThat(result.simulation is SimulationResult.Success).isTrue() } @Test @@ -160,6 +160,6 @@ class BlockAidMapperTest { ) val result = mapper.mapToDomain(txResponse) - Truth.assertThat(result.simulation is SimulationResult.FailedToSimulate).isTrue() + Truth.assertThat(result.simulation is SimulationResult.Success).isTrue() } } \ No newline at end of file diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/network/ethereum/WcEthTxHelper.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/network/ethereum/WcEthTxHelper.kt index ebf796f991..057afaa2e9 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/network/ethereum/WcEthTxHelper.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/network/ethereum/WcEthTxHelper.kt @@ -76,7 +76,7 @@ internal class WcEthTxHelper @Inject constructor( ?: return null val approves = (simulation.data as? SimulationData.Approve)?.approvedAmounts ?: return null - if (approves.size != 1) return null + if (approves.isEmpty()) return null val amount = approves.first() return amount } diff --git a/domain/blockaid/models/src/main/kotlin/com/domain/blockaid/models/transaction/simultation/SimulationData.kt b/domain/blockaid/models/src/main/kotlin/com/domain/blockaid/models/transaction/simultation/SimulationData.kt index afd8fea9e9..13c28ebba4 100644 --- a/domain/blockaid/models/src/main/kotlin/com/domain/blockaid/models/transaction/simultation/SimulationData.kt +++ b/domain/blockaid/models/src/main/kotlin/com/domain/blockaid/models/transaction/simultation/SimulationData.kt @@ -19,4 +19,9 @@ sealed class SimulationData { data class Approve( val approvedAmounts: List, ) : SimulationData() + + /** + * Simulation was successfully performed and no changes detected + */ + data object NoWalletChangesDetected : SimulationData() } \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/blockaid/WcSendReceiveTransactionCheckResultsUM.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/blockaid/WcSendReceiveTransactionCheckResultsUM.kt index 57b9c03f54..850cfb201e 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/blockaid/WcSendReceiveTransactionCheckResultsUM.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/blockaid/WcSendReceiveTransactionCheckResultsUM.kt @@ -7,6 +7,7 @@ internal data class WcSendReceiveTransactionCheckResultsUM( val estimatedWalletChanges: WcEstimatedWalletChangesUM? = null, val spendAllowance: WcSpendAllowanceUM? = null, val notification: BlockAidNotificationUM? = null, + val additionalNotification: TextReference? = null, val isLoading: Boolean = true, ) diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/TransactionCheckResultsItem.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/TransactionCheckResultsItem.kt index b70cf31f20..2b7aca4340 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/TransactionCheckResultsItem.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/TransactionCheckResultsItem.kt @@ -11,6 +11,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.unit.dp import com.tangem.core.ui.extensions.TextReference +import com.tangem.core.ui.extensions.isNullOrEmpty import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview @@ -43,8 +44,10 @@ internal fun TransactionCheckResultsItem( WcEstimatedWalletChangesItem(item.estimatedWalletChanges) } else if (item.spendAllowance != null) { WcSpendAllowanceItem(item.spendAllowance, onClickAllowToSpend) + } else if (!item.additionalNotification.isNullOrEmpty()) { + WcEstimatedWalletChangesNotificationItem(description = item.additionalNotification) } else { - WcEstimatedWalletChangesNotLoadedItem() + WcEstimatedWalletChangesNotificationItem() } } } diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesNotLoadedItem.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesNotificationItem.kt similarity index 82% rename from features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesNotLoadedItem.kt rename to features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesNotificationItem.kt index de2a38ce6a..603839d220 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesNotLoadedItem.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesNotificationItem.kt @@ -12,6 +12,8 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.tooling.preview.Devices import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.tangem.core.ui.extensions.TextReference +import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview @@ -19,7 +21,10 @@ import com.tangem.features.walletconnect.impl.R import com.tangem.features.walletconnect.transaction.ui.common.WcSmallTitleItem @Composable -internal fun WcEstimatedWalletChangesNotLoadedItem(modifier: Modifier = Modifier) { +internal fun WcEstimatedWalletChangesNotificationItem( + modifier: Modifier = Modifier, + description: TextReference? = null, +) { Column( modifier = modifier .clip(RoundedCornerShape(14.dp)) @@ -36,7 +41,8 @@ internal fun WcEstimatedWalletChangesNotLoadedItem(modifier: Modifier = Modifier modifier = modifier .fillMaxWidth() .padding(start = 12.dp, end = 12.dp, bottom = 14.dp), - text = stringResourceSafe(R.string.wc_estimated_wallet_changes_not_simulated), + text = description?.resolveReference() + ?: stringResourceSafe(R.string.wc_estimated_wallet_changes_not_simulated), color = TangemTheme.colors.text.tertiary, style = TangemTheme.typography.body2, ) @@ -52,7 +58,7 @@ private fun WcEstimatedWalletChangesNotLoadedItems() { modifier = Modifier .background(TangemTheme.colors.background.tertiary), ) { - WcEstimatedWalletChangesNotLoadedItem() + WcEstimatedWalletChangesNotificationItem() } } } \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcSendAndReceiveBlockAidUiConverter.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcSendAndReceiveBlockAidUiConverter.kt index d42cf5e233..1eda478462 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcSendAndReceiveBlockAidUiConverter.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcSendAndReceiveBlockAidUiConverter.kt @@ -30,6 +30,7 @@ internal class WcSendAndReceiveBlockAidUiConverter @Inject constructor( ) : Converter { override fun convert(value: Input): WcSendReceiveTransactionCheckResultsUM { val description = value.result.description?.let { if (it.isNotEmpty()) TextReference.Str(it) else null } + val simulation = value.result.simulation return WcSendReceiveTransactionCheckResultsUM( isLoading = false, notification = when (value.result.validation) { @@ -45,9 +46,16 @@ internal class WcSendAndReceiveBlockAidUiConverter @Inject constructor( text = description, ) }, - estimatedWalletChanges = (value.result.simulation as? SimulationResult.Success)?.data?.let { data -> + additionalNotification = (simulation as? SimulationResult.Success)?.data?.let { data -> + if (data is SimulationData.NoWalletChangesDetected) { + TextReference.Res(R.string.wc_no_wallet_changes_detected) + } else { + null + } + }, + estimatedWalletChanges = (simulation as? SimulationResult.Success)?.data?.let { data -> when (data) { - is SimulationData.Approve -> null + is SimulationData.Approve, SimulationData.NoWalletChangesDetected -> null is SimulationData.SendAndReceive -> { val items: ImmutableList = ( data.send.map { @@ -94,7 +102,7 @@ internal class WcSendAndReceiveBlockAidUiConverter @Inject constructor( }, spendAllowance = (value.result.simulation as? SimulationResult.Success)?.data?.let { data -> when (data) { - is SimulationData.SendAndReceive -> null + is SimulationData.SendAndReceive, SimulationData.NoWalletChangesDetected -> null is SimulationData.Approve -> value.approvedAmount?.let { spendAllowanceUMConverter.convert(it) }