diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/buttons/small/TangemIconButton.kt b/core/ui/src/main/java/com/tangem/core/ui/components/buttons/small/TangemIconButton.kt index 665299d7aa..0d0e4d25ef 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/buttons/small/TangemIconButton.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/buttons/small/TangemIconButton.kt @@ -40,6 +40,7 @@ fun TangemIconButton( @DrawableRes iconRes: Int, onClick: () -> Unit, modifier: Modifier = Modifier, + enabled: Boolean = true, shape: RoundedCornerShape = RoundedCornerShape(24.dp), background: Color = TangemTheme.colors.button.secondary, iconTint: Color = TangemTheme.colors.icon.secondary, @@ -52,7 +53,7 @@ fun TangemIconButton( modifier = modifier .size(24.dp) .clip(shape) - .clickable(onClick = onClick) + .clickable(onClick = onClick, enabled = enabled) .background(background) .padding(innerPadding), ) diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsStateFactory.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsStateFactory.kt index 65c302d82c..80521c7689 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsStateFactory.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsStateFactory.kt @@ -47,6 +47,7 @@ internal class TangemPayDetailsStateFactory( cardsBlockState = TangemPayDetailsBalanceBlockState.CardsBlockState( cards = persistentListOf(), onAddCardClick = intents::onAddCardClick, + isAddCardEnabled = false, ), ), isBalanceHidden = false, @@ -58,11 +59,6 @@ internal class TangemPayDetailsStateFactory( fun getLoadedState(status: PaymentAccountStatusValue.Loaded): TangemPayDetailsUM { val hasUnfrozenCard = status.cards.any { it.frozenState == TangemPayCardFrozenState.Unfrozen } - val errorNotificationConfig = when (status.error) { - null -> null - PaymentAccountStatusValue.Error.NotSynced -> createRenewSessionNotificationConfig() - else -> createAccountUnavailableConfig() - } return TangemPayDetailsUM( topBarConfig = TangemPayDetailsTopBarConfig( onBackClick = onBack, @@ -75,7 +71,7 @@ internal class TangemPayDetailsStateFactory( onRefresh = intents::onRefreshSwipe, ), balanceBlockState = TangemPayDetailsBalanceBlockState.Loading( - actionButtons = getActionButtonsConfig(isEnabled = errorNotificationConfig == null && hasUnfrozenCard), + actionButtons = getActionButtonsConfig(isEnabled = status.error == null && hasUnfrozenCard), cardsBlockState = TangemPayDetailsBalanceBlockState.CardsBlockState( cards = status.cards .let { if (isMultipleCardsEnabled) it else it.take(1) } @@ -85,18 +81,23 @@ internal class TangemPayDetailsStateFactory( onClick = { intents.onCardClick(cardItem.id) }, isReissuingOrClosing = cardItem.state == TangemPayCardState.Reissuing || cardItem.state == TangemPayCardState.Closing, - isEnabled = errorNotificationConfig == null, + isEnabled = status.error == null, isFrozen = cardItem.isFrozen, isIssuing = cardItem.state == TangemPayCardState.Issuing, ) } .toImmutableList(), onAddCardClick = intents::onAddCardClick, + isAddCardEnabled = status.error == null, ), ), isBalanceHidden = false, addToWalletBlockState = null, - errorNotificationConfig = errorNotificationConfig, + errorNotificationConfig = when (status.error) { + null -> null + PaymentAccountStatusValue.Error.NotSynced -> createRenewSessionNotificationConfig() + else -> createAccountUnavailableConfig() + }, accountDeactivatedNotificationConfig = null, ) } diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsUM.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsUM.kt index 3ee5ed1968..523b1c4650 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsUM.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsUM.kt @@ -90,7 +90,12 @@ internal sealed class TangemPayDetailsBalanceBlockState { override val cardsBlockState: CardsBlockState?, ) : TangemPayDetailsBalanceBlockState() - data class CardsBlockState(val cards: ImmutableList, val onAddCardClick: () -> Unit) + data class CardsBlockState( + val cards: ImmutableList, + val onAddCardClick: () -> Unit, + val isAddCardEnabled: Boolean, + ) + data class Card( val lastDigits: String, val onClick: () -> Unit, diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayDetailsScreen.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayDetailsScreen.kt index f51ed7762a..6de094b16c 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayDetailsScreen.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayDetailsScreen.kt @@ -304,10 +304,11 @@ private fun CardsBlockRow( TangemPayCardItem(modifier = itemsModifier, card = card) } TangemIconButton( - modifier = itemsModifier, + modifier = itemsModifier.alpha(if (cardsBlockState.isAddCardEnabled) 1f else DISABLED_ALPHA), onClick = cardsBlockState.onAddCardClick, iconRes = R.drawable.ic_plus_24, shape = RoundedCornerShape(4.dp), + enabled = cardsBlockState.isAddCardEnabled, ) } } @@ -500,6 +501,7 @@ internal class TangemPayDetailsUMProvider : CollectionPreviewParameterProvider Unit, modifier: Modifier = Modifier) { +internal fun TangemPayAddCardView(onClick: () -> Unit, isEnabled: Boolean, modifier: Modifier = Modifier) { Box( modifier = modifier + .alpha(if (isEnabled) 1f else DISABLED_ALPHA) .size( height = TangemTheme.dimens2.x10, width = TangemTheme.dimens2.x14, ) .clip(RoundedCornerShape(6.dp)) .background(TangemTheme.colors3.bg.opaque.primary) - .clickableSingle(onClick = onClick), + .clickableSingle(onClick = onClick, enabled = isEnabled), contentAlignment = Alignment.Center, ) { Icon( @@ -138,7 +140,7 @@ private fun CardBackground( Box( modifier = modifier - .alpha(if (isEnabled) 1f else 0.5f) + .alpha(if (isEnabled) 1f else DISABLED_ALPHA) .clip(RoundedCornerShape(6.dp)) .drawBehind { drawRect(bgColor) @@ -216,7 +218,7 @@ private fun CardBackgroundPreview() { isFrozen = false, ) SpacerH(TangemTheme.dimens2.x4) - TangemPayAddCardView(onClick = {}) + TangemPayAddCardView(onClick = {}, isEnabled = true) SpacerH(TangemTheme.dimens2.x4) TangemPayCardView( isIssueInProgress = false,