From 438b8ab22bb88ad281ecdc4cda4bdacbbdca3b4d Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 19 May 2025 16:03:27 +0400 Subject: [PATCH] Updated on 2026-08-14 --- ...cieve_new_24.xml => ic_receive_new_24.xml} | 0 .../blockaid/TransactionCheckResultsUM.kt | 6 ++ .../blockaid/TransactionCheckResultsItem.kt | 75 +++++++++++++++++++ .../blockaid/WcEstimatedWalletChangesItem.kt | 2 +- .../blockaid/WcTransactionCheckErrorItem.kt | 49 ++++++++++++ 5 files changed, 131 insertions(+), 1 deletion(-) rename core/ui/src/main/res/drawable/{ic_recieve_new_24.xml => ic_receive_new_24.xml} (100%) create mode 100644 features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/blockaid/TransactionCheckResultsUM.kt create mode 100644 features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/TransactionCheckResultsItem.kt create mode 100644 features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcTransactionCheckErrorItem.kt diff --git a/core/ui/src/main/res/drawable/ic_recieve_new_24.xml b/core/ui/src/main/res/drawable/ic_receive_new_24.xml similarity index 100% rename from core/ui/src/main/res/drawable/ic_recieve_new_24.xml rename to core/ui/src/main/res/drawable/ic_receive_new_24.xml diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/blockaid/TransactionCheckResultsUM.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/blockaid/TransactionCheckResultsUM.kt new file mode 100644 index 0000000000..6bb884bc3c --- /dev/null +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/blockaid/TransactionCheckResultsUM.kt @@ -0,0 +1,6 @@ +package com.tangem.features.walletconnect.transaction.entity.blockaid + +internal data class TransactionCheckResultsUM( + val estimatedWalletChanges: WcEstimatedWalletChangesUM, + val notificationText: String? = null, +) \ No newline at end of file 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 new file mode 100644 index 0000000000..a4cbbcc8cc --- /dev/null +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/TransactionCheckResultsItem.kt @@ -0,0 +1,75 @@ +package com.tangem.features.walletconnect.transaction.ui.blockaid + +import android.content.res.Configuration +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Devices +import androidx.compose.ui.tooling.preview.Preview +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.resourceReference +import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.res.TangemThemePreview +import com.tangem.features.walletconnect.impl.R +import com.tangem.features.walletconnect.transaction.entity.blockaid.WcEstimatedWalletChangeUM +import com.tangem.features.walletconnect.transaction.entity.blockaid.WcEstimatedWalletChangesUM +import com.tangem.features.walletconnect.transaction.entity.blockaid.TransactionCheckResultsUM +import kotlinx.collections.immutable.persistentListOf + +@Composable +internal fun TransactionCheckResultsItem(item: TransactionCheckResultsUM, modifier: Modifier = Modifier) { + Column( + modifier = modifier + .padding(12.dp) + .fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(12.dp), + ) { + if (item.notificationText != null) { + WcTransactionCheckErrorItem(item.notificationText) + } + WcEstimatedWalletChangesItem(item.estimatedWalletChanges) + } +} + +@Composable +@Preview(showBackground = true, device = Devices.PIXEL_7_PRO) +@Preview(showBackground = true, device = Devices.PIXEL_7_PRO, uiMode = Configuration.UI_MODE_NIGHT_YES) +private fun TransactionCheckResultsItemPreview( + @PreviewParameter(TransactionCheckResultsItemProvider::class) item: TransactionCheckResultsUM, +) { + TangemThemePreview { + Box( + modifier = Modifier + .background(TangemTheme.colors.background.tertiary), + ) { + TransactionCheckResultsItem(item = item) + } + } +} + +private class TransactionCheckResultsItemProvider : PreviewParameterProvider { + override val values = sequenceOf( + TransactionCheckResultsUM( + notificationText = "The transaction approves erc20 tokens to a known malicious address", + estimatedWalletChanges = WcEstimatedWalletChangesUM( + items = persistentListOf( + WcEstimatedWalletChangeUM( + iconRes = R.drawable.ic_send_new_24, + title = resourceReference(R.string.common_send), + description = "- 42 USDT", + tokenIconUrl = "https://tangem.com", + ), + WcEstimatedWalletChangeUM( + iconRes = R.drawable.ic_receive_new_24, + title = resourceReference(R.string.common_receive), + description = "+ 1,131.46 MATIC", + tokenIconUrl = "https://tangem.com", + ), + ), + ), + ), + ) +} \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesItem.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesItem.kt index b0b37f31ac..cbe8e3f59a 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesItem.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcEstimatedWalletChangesItem.kt @@ -138,7 +138,7 @@ private class EstimatedWalletChangesPreviewProviderTwoItems : tokenIconUrl = "https://tangem.com", ), WcEstimatedWalletChangeUM( - iconRes = R.drawable.ic_recieve_new_24, + iconRes = R.drawable.ic_receive_new_24, title = resourceReference(R.string.common_receive), description = "+ 1,131.46 MATIC", tokenIconUrl = "https://tangem.com", diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcTransactionCheckErrorItem.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcTransactionCheckErrorItem.kt new file mode 100644 index 0000000000..a8431340b3 --- /dev/null +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/blockaid/WcTransactionCheckErrorItem.kt @@ -0,0 +1,49 @@ +package com.tangem.features.walletconnect.transaction.ui.blockaid + +import android.content.res.Configuration +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Devices +import androidx.compose.ui.tooling.preview.Preview +import com.tangem.core.ui.components.notifications.Notification +import com.tangem.core.ui.components.notifications.NotificationConfig +import com.tangem.core.ui.extensions.TextReference +import com.tangem.core.ui.extensions.resourceReference +import com.tangem.core.ui.res.TangemColorPalette +import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.res.TangemThemePreview +import com.tangem.features.walletconnect.impl.R + +@Composable +internal fun WcTransactionCheckErrorItem(notificationText: String, modifier: Modifier = Modifier) { + Notification( + modifier = modifier + .fillMaxWidth(), + config = NotificationConfig( + title = resourceReference(R.string.wc_malicious_transaction), + subtitle = TextReference.Str(notificationText), + iconResId = R.drawable.ic_alert_circle_24, + ), + containerColor = TangemColorPalette.Amaranth.copy(alpha = 0.1f), + titleColor = TangemTheme.colors.text.warning, + subtitleColor = TangemTheme.colors.text.primary1, + iconTint = TangemTheme.colors.icon.warning, + ) +} + +@Composable +@Preview(showBackground = true, device = Devices.PIXEL_7_PRO) +@Preview(showBackground = true, device = Devices.PIXEL_7_PRO, uiMode = Configuration.UI_MODE_NIGHT_YES) +private fun WcTransactionCheckErrorItemPreview() { + TangemThemePreview { + Box( + modifier = Modifier + .background(TangemTheme.colors.background.tertiary), + ) { + WcTransactionCheckErrorItem("The transaction approves erc20 tokens to a known malicious address") + } + } +} \ No newline at end of file