Updated on 2026-08-14

This commit is contained in:
Tangem 2025-08-04 12:11:22 +04:00
parent aa2439e3fa
commit e803ab0d7d
12 changed files with 103 additions and 24 deletions

View file

@ -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,
)

View file

@ -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()
}
}
}

View file

@ -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()
}
}
}

View file

@ -30,6 +30,7 @@ internal class WcSendAndReceiveBlockAidUiConverter @Inject constructor(
) : Converter<WcSendAndReceiveBlockAidUiConverter.Input, WcSendReceiveTransactionCheckResultsUM> {
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<WcEstimatedWalletChangeUM> = (
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)
}