From c881e8d6dbd6fafe569e1c4fe12a29cc8643206d Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 2 May 2024 17:36:26 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../ui/fee/SendSpeedSelectorItem.kt | 49 ++++++++++++++----- .../impl/presentation/ui/send/FeeBlock.kt | 2 +- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedSelectorItem.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedSelectorItem.kt index c42e7e152d..d9c609a5ca 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedSelectorItem.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedSelectorItem.kt @@ -4,15 +4,14 @@ import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.compose.animation.* import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.* import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import com.tangem.blockchain.common.Amount import com.tangem.blockchain.common.transaction.TransactionFee +import com.tangem.core.ui.components.RectangleShimmer import com.tangem.core.ui.components.SpacerWMax import com.tangem.core.ui.components.rows.SelectorRowItem import com.tangem.core.ui.res.TangemTheme @@ -59,25 +58,50 @@ internal fun SendSpeedSelectorItem( isSelected = content?.selectedFee == feeType, showDivider = showDivider, ) - SendSpeedSelectorItemError(isError = feeSelectorState is FeeSelectorState.Error) + FeeLoading(feeSelectorState) + FeeError(feeSelectorState) } } } @Composable -private fun SendSpeedSelectorItemError(isError: Boolean) { +private fun FeeLoading(feeSelectorState: FeeSelectorState) { Row { SpacerWMax() AnimatedVisibility( - visible = isError, - label = "Error state indication animation", - enter = fadeIn(), - exit = fadeOut(), + visible = feeSelectorState == FeeSelectorState.Loading, + label = "Fee Loading State Change", + modifier = Modifier.align(Alignment.CenterVertically), + ) { + RectangleShimmer( + radius = TangemTheme.dimens.radius3, + modifier = Modifier + .padding( + vertical = TangemTheme.dimens.spacing18, + horizontal = TangemTheme.dimens.spacing12, + ) + .size( + height = TangemTheme.dimens.size12, + width = TangemTheme.dimens.size90, + ), + ) + } + } +} + +@Composable +private fun FeeError(feeSelectorState: FeeSelectorState) { + Row { + SpacerWMax() + AnimatedVisibility( + visible = feeSelectorState == FeeSelectorState.Error, + label = "Fee Error State Change", + modifier = Modifier.align(Alignment.CenterVertically), ) { Text( text = BigDecimalFormatter.EMPTY_BALANCE_SIGN, - style = TangemTheme.typography.body2, color = TangemTheme.colors.text.primary1, + style = TangemTheme.typography.body2, modifier = Modifier .padding( vertical = TangemTheme.dimens.spacing14, @@ -101,10 +125,9 @@ private fun FeeSelectorState.Content.getAmount(feeType: FeeType): Amount? { private fun FeeSelectorState.Content?.getDividerAndVisibility(feeType: FeeType): Pair { val hasCustomValues = !this?.customValues.isNullOrEmpty() val isNotSingle = this?.fees !is TransactionFee.Single - val isLoaded = this?.fees != null return when (feeType) { FeeType.Slow -> true to isNotSingle - FeeType.Market -> isNotSingle to isLoaded + FeeType.Market -> isNotSingle to true FeeType.Fast -> hasCustomValues to isNotSingle FeeType.Custom -> false to hasCustomValues } diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/send/FeeBlock.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/send/FeeBlock.kt index 30814b802f..54ef73296a 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/send/FeeBlock.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/send/FeeBlock.kt @@ -32,7 +32,7 @@ internal fun FeeBlock(feeState: SendStates.FeeState, isSuccess: Boolean, onClick .fillMaxWidth() .clip(TangemTheme.shapes.roundedCornersXMedium) .background(TangemTheme.colors.background.action) - .clickable(enabled = !isSuccess && feeState.fee != null) { onClick() } + .clickable(enabled = !isSuccess, onClick = onClick) .padding(TangemTheme.dimens.spacing12), ) { Text(