From 01b655feb7a6012a0c1ed8f08d5350ba5cf57bd2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 30 Aug 2024 15:23:48 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../presentation/state/StakingStateRouter.kt | 4 +--- .../transformers/SetButtonsStateTransformer.kt | 2 +- .../ui/StakingConfirmationContent.kt | 11 ++++++++--- .../presentation/viewmodel/StakingViewModel.kt | 16 ++++++++-------- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/StakingStateRouter.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/StakingStateRouter.kt index 03cc906908..5dd1f3de27 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/StakingStateRouter.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/StakingStateRouter.kt @@ -26,9 +26,7 @@ internal class StakingStateRouter( StakingStep.Validators, StakingStep.Amount, -> showConfirmation() - StakingStep.Confirmation -> { - // TODO staking handle - } + StakingStep.Confirmation -> showInitial() } } diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetButtonsStateTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetButtonsStateTransformer.kt index 6bd2c902fa..b18c96f147 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetButtonsStateTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetButtonsStateTransformer.kt @@ -152,7 +152,7 @@ internal class SetButtonsStateTransformer : Transformer { private fun StakingUiState.onConfirmationClick() { if (confirmationState is StakingStates.ConfirmationState.Data) { if (confirmationState.innerState == InnerConfirmationStakingState.COMPLETED) { - clickIntents.onBackClick() + clickIntents.onNextClick() } else { val isEnterAction = actionType == StakingActionCommonType.ENTER val isApproveNeeded = confirmationState.isApprovalNeeded 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 ae5079b938..d7a9431621 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 @@ -3,11 +3,15 @@ package com.tangem.features.staking.impl.presentation.ui import android.content.res.Configuration import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -45,11 +49,12 @@ internal fun StakingConfirmationContent( .verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing16), ) { + val doneState = state.transactionDoneState AnimatedVisibility( - visible = state.transactionDoneState is TransactionDoneState.Content, + visible = doneState is TransactionDoneState.Content, modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing12), ) { - val transactionDoneStateContent = state.transactionDoneState as TransactionDoneState.Content + val transactionDoneStateContent = remember(this) { doneState as TransactionDoneState.Content } TransactionDoneTitle( titleRes = R.string.sent_transaction_sent_title, date = transactionDoneStateContent.timestamp, 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 1c18173837..4eba6fabde 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 @@ -164,23 +164,19 @@ internal class StakingViewModel @Inject constructor( stateController.update { it.copy(actionType = actionType) } } stakingStateRouter.onNextClick() - if (isAssentState()) { - getFee(pendingAction) + when { + isInitState() -> stateController.update(SetConfirmationStateLoadingTransformer(yield)) + isAssentState() -> getFee(pendingAction) } } override fun onActionClick() { handleOnNextConfirmationClick() - stakingStateRouter.onNextClick() } override fun getFee(pendingAction: PendingAction?) { viewModelScope.launch { - stateController.update( - SetConfirmationStateLoadingTransformer( - yield = yield, - ), - ) + stateController.update(SetConfirmationStateLoadingTransformer(yield)) val cryptoCurrencyValue = cryptoCurrencyStatus.value val confirmationState = value.confirmationState as? StakingStates.ConfirmationState.Data ?: error("No confirmation state") @@ -871,6 +867,10 @@ internal class StakingViewModel @Inject constructor( InnerConfirmationStakingState.ASSENT } + private fun isInitState(): Boolean { + return value.currentStep == StakingStep.InitialInfo + } + private suspend fun checkIfSubtractAvailable() { isAmountSubtractAvailable = isAmountSubtractAvailableUseCase(userWalletId, cryptoCurrencyStatus.currency) .getOrElse { false }