diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml
index 035f2fcd47..3345fb4f82 100644
--- a/core/res/src/main/res/values-ru/strings.xml
+++ b/core/res/src/main/res/values-ru/strings.xml
@@ -116,6 +116,7 @@
Успешно
Обмен
условия участия
+ Ошибка транзакции
Транзакции
Перевод
Я понял
diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt b/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt
index 676da451cf..e1947a8843 100644
--- a/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt
+++ b/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt
@@ -119,6 +119,7 @@ fun Transaction(state: TransactionState, isBalanceHidden: Boolean, modifier: Mod
}
}
+@Suppress("CyclomaticComplexMethod")
@Composable
private fun Icon(state: TransactionState, modifier: Modifier = Modifier) {
when (state) {
@@ -128,28 +129,28 @@ private fun Icon(state: TransactionState, modifier: Modifier = Modifier) {
.size(TangemTheme.dimens.size40)
.background(
color = when (state.status) {
- is Status.Unconfirmed -> {
- TangemTheme.colors.icon.attention.copy(alpha = 0.1f)
- }
- is Status.Confirmed, Status.Failed -> {
- TangemTheme.colors.background.secondary
- }
+ is Status.Unconfirmed -> TangemTheme.colors.icon.attention.copy(alpha = 0.1f)
+ is Status.Confirmed -> TangemTheme.colors.background.secondary
+ is Status.Failed -> TangemTheme.colors.icon.warning.copy(alpha = 0.1f)
},
shape = CircleShape,
),
) {
Icon(
painter = painterResource(
- id = when (state) {
- is TransactionState.Transfer -> {
- when (state.direction) {
- Direction.OUTGOING -> R.drawable.ic_arrow_up_24
- Direction.INCOMING -> R.drawable.ic_arrow_down_24
+ id = when (state.status) {
+ is Status.Failed -> R.drawable.ic_close_24
+ else -> when (state) {
+ is TransactionState.Transfer -> {
+ when (state.direction) {
+ Direction.OUTGOING -> R.drawable.ic_arrow_up_24
+ Direction.INCOMING -> R.drawable.ic_arrow_down_24
+ }
}
+ is TransactionState.Approve -> R.drawable.ic_doc_24
+ is TransactionState.Swap -> R.drawable.ic_exchange_vertical_24
+ is TransactionState.Custom -> R.drawable.ic_exchange_vertical_24
}
- is TransactionState.Approve -> R.drawable.ic_doc_24
- is TransactionState.Swap -> R.drawable.ic_exchange_vertical_24
- is TransactionState.Custom -> R.drawable.ic_exchange_vertical_24
},
),
contentDescription = null,
@@ -157,8 +158,9 @@ private fun Icon(state: TransactionState, modifier: Modifier = Modifier) {
.size(TangemTheme.dimens.size20)
.align(Alignment.Center),
tint = when (state.status) {
- Status.Confirmed, Status.Failed -> TangemTheme.colors.icon.informative
+ Status.Confirmed -> TangemTheme.colors.icon.informative
Status.Unconfirmed -> TangemTheme.colors.icon.attention
+ Status.Failed -> TangemTheme.colors.icon.warning
},
)
}
@@ -224,35 +226,37 @@ private fun Subtitle(state: TransactionState, modifier: Modifier = Modifier) {
when (state) {
is TransactionState.Content -> {
Text(
- text = when (state) {
- is TransactionState.Transfer -> {
- when (state.direction) {
- Direction.OUTGOING -> stringResource(
- id = R.string.transaction_history_transaction_to_address,
- state.address.resolveReference(),
- )
- Direction.INCOMING -> stringResource(
- id = R.string.transaction_history_transaction_from_address,
- state.address.resolveReference(),
- )
+ text = when (state.status) {
+ is Status.Failed -> stringResource(id = R.string.common_transaction_failed)
+ else -> when (state) {
+ is TransactionState.Transfer -> {
+ when (state.direction) {
+ Direction.OUTGOING -> stringResource(
+ id = R.string.transaction_history_transaction_to_address,
+ state.address.resolveReference(),
+ )
+ Direction.INCOMING -> stringResource(
+ id = R.string.transaction_history_transaction_from_address,
+ state.address.resolveReference(),
+ )
+ }
}
+ is TransactionState.Approve -> stringResource(
+ id = R.string.transaction_history_transaction_from_address,
+ state.address.resolveReference(),
+ )
+ is TransactionState.Swap -> stringResource(
+ id = R.string.transaction_history_contract_address,
+ state.address.resolveReference(),
+ )
+ is TransactionState.Custom -> stringResource(
+ id = when (state.direction) {
+ Direction.OUTGOING -> R.string.transaction_history_transaction_to_address
+ Direction.INCOMING -> R.string.transaction_history_transaction_from_address
+ },
+ state.subtitle.resolveReference(),
+ )
}
- is TransactionState.Approve,
- -> stringResource(
- id = R.string.transaction_history_transaction_from_address,
- state.address.resolveReference(),
- )
- is TransactionState.Swap -> stringResource(
- id = R.string.transaction_history_contract_address,
- state.address.resolveReference(),
- )
- is TransactionState.Custom -> stringResource(
- id = when (state.direction) {
- Direction.OUTGOING -> R.string.transaction_history_transaction_to_address
- Direction.INCOMING -> R.string.transaction_history_transaction_from_address
- },
- state.subtitle.resolveReference(),
- )
},
modifier = modifier,
textAlign = TextAlign.Start,
@@ -376,6 +380,15 @@ private class TransactionItemStateProvider : CollectionPreviewParameterProvider<
direction = Direction.INCOMING,
onClick = {},
),
+ TransactionState.Approve(
+ txHash = UUID.randomUUID().toString(),
+ address = TextReference.Str("33BddS...ga2B"),
+ amount = "+0.500913 BTC",
+ timestamp = "8:41",
+ status = Status.Unconfirmed,
+ direction = Direction.OUTGOING,
+ onClick = {},
+ ),
TransactionState.Approve(
txHash = UUID.randomUUID().toString(),
address = TextReference.Str("33BddS...ga2B"),
@@ -385,6 +398,15 @@ private class TransactionItemStateProvider : CollectionPreviewParameterProvider<
direction = Direction.OUTGOING,
onClick = {},
),
+ TransactionState.Approve(
+ txHash = UUID.randomUUID().toString(),
+ address = TextReference.Str("33BddS...ga2B"),
+ amount = "+0.500913 BTC",
+ timestamp = "8:41",
+ status = Status.Confirmed,
+ direction = Direction.OUTGOING,
+ onClick = {},
+ ),
TransactionState.Swap(
txHash = UUID.randomUUID().toString(),
address = TextReference.Str("33BddS...ga2B"),