diff --git a/common/ui/src/main/java/com/tangem/common/ui/amountScreen/AmountScreenContent.kt b/common/ui/src/main/java/com/tangem/common/ui/amountScreen/AmountScreenContent.kt index 4f90184a2b..cfd16d8ee2 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/amountScreen/AmountScreenContent.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/amountScreen/AmountScreenContent.kt @@ -1,7 +1,6 @@ package com.tangem.common.ui.amountScreen import android.content.res.Configuration -import androidx.compose.foundation.background import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.runtime.Composable @@ -24,13 +23,17 @@ import com.tangem.core.ui.res.TangemThemePreview * @param clickIntents amount screen clicks */ @Composable -fun AmountScreenContent(amountState: AmountState, isBalanceHidden: Boolean, clickIntents: AmountScreenClickIntents) { +fun AmountScreenContent( + amountState: AmountState, + isBalanceHidden: Boolean, + clickIntents: AmountScreenClickIntents, + modifier: Modifier = Modifier, +) { if (amountState !is AmountState.Data) return // Do not put fillMaxSize() in here LazyColumn( - modifier = Modifier - .background(TangemTheme.colors.background.tertiary) + modifier = modifier .padding( start = TangemTheme.dimens.spacing16, end = TangemTheme.dimens.spacing16, diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/list/RoundedListWithDividers.kt b/core/ui/src/main/java/com/tangem/core/ui/components/list/RoundedListWithDividers.kt index 8ace2f0b02..87640bcc2a 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/list/RoundedListWithDividers.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/list/RoundedListWithDividers.kt @@ -2,11 +2,15 @@ package com.tangem.core.ui.components.list import android.content.res.Configuration import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import com.tangem.core.ui.R @@ -60,10 +64,8 @@ fun LazyListScope.roundedListWithDividersItems( endText = row.endText.orMaskWithStars(hideEndText && row.isEndTextHideable).resolveReference(), cornersToRound = getCornersToRound(index, rows.size), iconClick = row.iconClick, + showDivider = index < rows.lastIndex, ) - if (index < rows.lastIndex) { - RoundedListDivider() - } } if (footerContent != null) { @@ -78,41 +80,38 @@ private fun InitialInfoContentRow( startText: String, endText: String, cornersToRound: CornersToRound, + showDivider: Boolean, iconClick: (() -> Unit)? = null, ) { - RoundableCornersRow( - startText = startText, - startTextColor = TangemTheme.colors.text.primary1, - startTextStyle = TangemTheme.typography.body2, - endText = endText, - endTextColor = TangemTheme.colors.text.tertiary, - endTextStyle = TangemTheme.typography.body2, - cornersToRound = cornersToRound, - iconResId = R.drawable.ic_information_24, - iconClick = iconClick, - ) + Box { + RoundableCornersRow( + startText = startText, + startTextColor = TangemTheme.colors.text.primary1, + startTextStyle = TangemTheme.typography.body2, + endText = endText, + endTextColor = TangemTheme.colors.text.tertiary, + endTextStyle = TangemTheme.typography.body2, + cornersToRound = cornersToRound, + iconResId = R.drawable.ic_information_24, + iconClick = iconClick, + ) + if (showDivider) { + RoundedListDivider( + modifier = Modifier.align(Alignment.BottomEnd), + ) + } + } } @Composable -fun RoundedListDivider() { - Row( - modifier = Modifier +fun RoundedListDivider(modifier: Modifier = Modifier) { + Box( + modifier = modifier + .padding(start = TangemTheme.dimens.spacing16) .fillMaxWidth() - .height(TangemTheme.dimens.size0_5), - ) { - Box( - modifier = Modifier - .width(TangemTheme.dimens.size16) - .height(TangemTheme.dimens.size0_5) - .background(TangemTheme.colors.background.primary), - ) - Box( - modifier = Modifier - .weight(1f) - .height(TangemTheme.dimens.size0_5) - .background(TangemTheme.colors.background.tertiary), - ) - } + .height(TangemTheme.dimens.size0_5) + .background(TangemTheme.colors.stroke.primary), + ) } private fun getCornersToRound(currentIndex: Int, listSize: Int): CornersToRound { diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/rows/RoundableCornersRow.kt b/core/ui/src/main/java/com/tangem/core/ui/components/rows/RoundableCornersRow.kt index ac525e0fb1..df80c7d5b3 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/rows/RoundableCornersRow.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/rows/RoundableCornersRow.kt @@ -41,7 +41,7 @@ fun RoundableCornersRow( ) { Surface( shape = cornersToRound.getShape(), - color = TangemTheme.colors.background.primary, + color = TangemTheme.colors.background.action, ) { Row( modifier = Modifier diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendScreen.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendScreen.kt index 2c4304444f..3324d89836 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendScreen.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendScreen.kt @@ -165,11 +165,13 @@ private fun SendScreenContent(uiState: SendUiState, currentState: SendUiCurrentS amountState = uiState.amountState, isBalanceHidden = uiState.isBalanceHidden, clickIntents = uiState.clickIntents, + modifier = Modifier.background(TangemTheme.colors.background.tertiary), ) SendUiStateType.EditAmount -> AmountScreenContent( - amountState = uiState.editAmountState!!, + amountState = uiState.editAmountState, isBalanceHidden = uiState.isBalanceHidden, clickIntents = uiState.clickIntents, + modifier = Modifier.background(TangemTheme.colors.background.tertiary), ) SendUiStateType.Recipient -> SendRecipientContent( uiState = uiState.recipientState, diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt index f6c6eaac4c..be78b5321c 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt @@ -104,7 +104,7 @@ internal class AddStakingNotificationsTransformer( return prevState.copy( confirmationState = confirmationState.copy( notifications = notifications.toImmutableList(), - isPrimaryButtonEnabled = !notifications.any { it is StakingNotification.Error }, + isPrimaryButtonEnabled = notifications.any { it is StakingNotification.Error }, ), ) } diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingConfirmationContent.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingConfirmationContent.kt index 701e97a0ce..8071e92164 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingConfirmationContent.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingConfirmationContent.kt @@ -20,6 +20,7 @@ import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview import com.tangem.domain.staking.model.stakekit.action.StakingActionCommonType import com.tangem.features.staking.impl.R +import com.tangem.features.staking.impl.presentation.state.InnerConfirmationStakingState import com.tangem.features.staking.impl.presentation.state.StakingStates import com.tangem.features.staking.impl.presentation.state.TransactionDoneState import com.tangem.features.staking.impl.presentation.state.previewdata.ConfirmationStatePreviewData @@ -38,7 +39,7 @@ internal fun StakingConfirmationContent( ) { if (state !is StakingStates.ConfirmationState.Data) return val isEnterAction = type == StakingActionCommonType.ENTER - + val isTransactionSent = state.innerState == InnerConfirmationStakingState.COMPLETED Column( modifier = Modifier .background(TangemTheme.colors.background.secondary) @@ -60,13 +61,13 @@ internal fun StakingConfirmationContent( AmountBlock( amountState = amountState, isClickDisabled = !isEnterAction, - isEditingDisabled = !isEnterAction, + isEditingDisabled = !isEnterAction || isTransactionSent, onClick = clickIntents::onPrevClick, ) if (isEnterAction) { ValidatorBlock(validatorState = state.validatorState, onClick = clickIntents::openValidators) } - StakingFeeBlock(feeState = state.feeState) + StakingFeeBlock(feeState = state.feeState, isTransactionSent = isTransactionSent) NotificationsBlock(notifications = state.notifications) } } diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingScreen.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingScreen.kt index 55ea17c9a9..d5ae448888 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingScreen.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingScreen.kt @@ -121,9 +121,7 @@ private fun StakingScreenContent(uiState: StakingUiState, modifier: Modifier = M snapshotFlow { isTransitionAnimationRunning } .withIndex() .map { (index, running) -> - if (running && index != 0) { - delay(timeMillis = 200) - } + if (running && index != 0) delay(timeMillis = 200) running } .first { !it } @@ -169,6 +167,7 @@ private fun StakingScreenContent(uiState: StakingUiState, modifier: Modifier = M amountState = uiState.amountState, isBalanceHidden = uiState.isBalanceHidden, clickIntents = uiState.clickIntents, + modifier = Modifier.background(TangemTheme.colors.background.secondary), ) StakingStep.Confirmation -> StakingConfirmationContent( amountState = uiState.amountState, diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt index 57ad4dd680..9f8db40d8e 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt @@ -44,7 +44,9 @@ internal fun StakingValidatorListContent( LazyColumn( contentPadding = PaddingValues(bottom = bottomBarHeight), - modifier = modifier.padding(horizontal = TangemTheme.dimens.spacing16), + modifier = modifier + .background(TangemTheme.colors.background.secondary) + .padding(horizontal = TangemTheme.dimens.spacing16), ) { if (state is ValidatorState.Content) { val validators = state.availableValidators diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/block/StakingFeeBlock.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/block/StakingFeeBlock.kt index 2efa78b2d0..93802cd66d 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/block/StakingFeeBlock.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/block/StakingFeeBlock.kt @@ -29,12 +29,18 @@ import com.tangem.features.staking.impl.presentation.state.FeeState import java.math.BigDecimal @Composable -internal fun StakingFeeBlock(feeState: FeeState) { +internal fun StakingFeeBlock(feeState: FeeState, isTransactionSent: Boolean) { Column( modifier = Modifier .fillMaxWidth() .clip(TangemTheme.shapes.roundedCornersXMedium) - .background(TangemTheme.colors.button.disabled) + .background( + if (isTransactionSent) { + TangemTheme.colors.background.action + } else { + TangemTheme.colors.button.disabled + }, + ) .padding(TangemTheme.dimens.spacing12), ) { Text( @@ -128,6 +134,7 @@ private fun FeeBlockPreview(@PreviewParameter(FeeBlockPreviewProvider::class) va TangemThemePreview { StakingFeeBlock( feeState = value, + isTransactionSent = false, ) } } diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt index ce71e2b75b..e99d719256 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt @@ -326,7 +326,8 @@ internal class StakingViewModel @Inject constructor( type = pendingAction?.type, ), ).getOrElse { - stateController.update(AddStakingErrorTransformer(it)) + stateController.update(AddStakingErrorTransformer()) + updateNotifications(GetFeeError.UnknownError) return } stateController.update(