From 48f6151f42a4e2cd6b339a539d3ae816414aa313 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 3 Sep 2024 16:04:26 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../RewardsValidatorStateConverter.kt | 15 ++--- .../SetInitialDataStateTransformer.kt | 5 +- .../state/transformers/SetTitleTransformer.kt | 55 ++++++++++++------- .../viewmodel/StakingViewModel.kt | 16 ++++++ 4 files changed, 58 insertions(+), 33 deletions(-) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/RewardsValidatorStateConverter.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/RewardsValidatorStateConverter.kt index 673e81499b..987866f39b 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/RewardsValidatorStateConverter.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/RewardsValidatorStateConverter.kt @@ -1,6 +1,5 @@ package com.tangem.features.staking.impl.presentation.state.converters -import com.tangem.core.ui.extensions.combinedReference import com.tangem.core.ui.extensions.pluralReference import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.extensions.wrappedList @@ -13,7 +12,6 @@ import com.tangem.features.staking.impl.R import com.tangem.features.staking.impl.presentation.state.BalanceState import com.tangem.features.staking.impl.presentation.state.StakingStates import com.tangem.utils.Provider -import com.tangem.utils.StringsSigns.PLUS import com.tangem.utils.converter.Converter import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toPersistentList @@ -74,14 +72,11 @@ internal class RewardsValidatorStateConverter( cryptoCurrency = cryptoCurrency, ), ) - val fiatAmount = combinedReference( - stringReference(PLUS), - stringReference( - BigDecimalFormatter.formatFiatAmount( - fiatAmount = fiatValue, - fiatCurrencyCode = appCurrency.code, - fiatCurrencySymbol = appCurrency.symbol, - ), + val fiatAmount = stringReference( + BigDecimalFormatter.formatFiatAmount( + fiatAmount = fiatValue, + fiatCurrencyCode = appCurrency.code, + fiatCurrencySymbol = appCurrency.symbol, ), ) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt index b164510f98..ec70635b66 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt @@ -64,10 +64,7 @@ internal class SetInitialDataStateTransformer( val cryptoCurrencyName = cryptoCurrencyStatusProvider().currency.name return prevState.copy( - title = TextReference.Res( - R.string.staking_title_stake, - wrappedList(cryptoCurrencyName), - ), + title = TextReference.EMPTY, walletName = userWalletProvider.invoke().name, cryptoCurrencyName = cryptoCurrencyName, clickIntents = clickIntents, diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetTitleTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetTitleTransformer.kt index 7ad24a9041..2c0dea602d 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetTitleTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetTitleTransformer.kt @@ -1,11 +1,15 @@ package com.tangem.features.staking.impl.presentation.state.transformers +import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.extensions.wrappedList import com.tangem.domain.staking.model.stakekit.action.StakingActionCommonType import com.tangem.features.staking.impl.R -import com.tangem.features.staking.impl.presentation.state.* +import com.tangem.features.staking.impl.presentation.state.StakingStates +import com.tangem.features.staking.impl.presentation.state.StakingStep +import com.tangem.features.staking.impl.presentation.state.StakingUiState +import com.tangem.features.staking.impl.presentation.state.utils.getPendingActionTitle import com.tangem.utils.transformer.Transformer internal object SetTitleTransformer : Transformer { @@ -14,26 +18,39 @@ internal object SetTitleTransformer : Transformer { val actionType = prevState.actionType val currentStep = prevState.currentStep - val title = when { - currentStep == StakingStep.Amount -> { - resourceReference(R.string.send_amount_label) - } + val title = when (currentStep) { + StakingStep.Amount -> resourceReference(R.string.send_amount_label) + StakingStep.Validators -> resourceReference(R.string.staking_validators) + StakingStep.RewardsValidators -> resourceReference(R.string.common_claim_rewards) + StakingStep.InitialInfo -> resourceReference( + R.string.staking_title_stake, + wrappedList(prevState.cryptoCurrencyName), + ) - currentStep == StakingStep.Validators -> { - resourceReference(R.string.staking_validators) - } + StakingStep.Confirmation -> { + when (actionType) { + StakingActionCommonType.ENTER -> resourceReference( + R.string.staking_title_stake, + wrappedList(prevState.cryptoCurrencyName), + ) + StakingActionCommonType.EXIT -> resourceReference( + R.string.staking_title_unstake, + wrappedList(prevState.cryptoCurrencyName), + ) + else -> { + val confirmationState = prevState.confirmationState as? StakingStates.ConfirmationState.Data + val title = confirmationState?.pendingAction?.type?.getPendingActionTitle() - actionType == StakingActionCommonType.EXIT && currentStep != StakingStep.InitialInfo -> { - resourceReference( - R.string.staking_title_unstake, - wrappedList(prevState.cryptoCurrencyName), - ) - } - else -> { - resourceReference( - R.string.staking_title_stake, - wrappedList(prevState.cryptoCurrencyName), - ) + if (title == null || title == TextReference.EMPTY) { + resourceReference( + R.string.staking_title_stake, + wrappedList(prevState.cryptoCurrencyName), + ) + } else { + title + } + } + } } } 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 d6869e83d1..e2e06a8b8e 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 @@ -162,6 +162,13 @@ internal class StakingViewModel @Inject constructor( override fun onNextClick(actionTypeToOverwrite: StakingActionCommonType?, pendingAction: PendingAction?) { if (actionTypeToOverwrite != null) { stateController.update { it.copy(actionType = actionTypeToOverwrite) } + stateController.update { + val confirmationState = it.confirmationState as? StakingStates.ConfirmationState.Data + it.copy( + confirmationState = confirmationState?.copy(pendingAction = pendingAction) + ?: StakingStates.ConfirmationState.Empty(), + ) + } } stakingStateRouter.onNextClick() when { @@ -407,6 +414,14 @@ internal class StakingViewModel @Inject constructor( ShowActionSelectorBottomSheetTransformer( pendingActions = activeStake.pendingActions, onActionSelect = { + stateController.update(ValidatorSelectChangeTransformer(activeStake.validator)) + stateController.update( + AmountChangeStateTransformer( + cryptoCurrencyStatus, + activeStake.cryptoValue, + yield, + ), + ) onNextClick(actionTypeToOverwrite = StakingActionCommonType.PENDING_OTHER, pendingAction = it) stateController.update(DismissBottomSheetStateTransformer()) }, @@ -548,6 +563,7 @@ internal class StakingViewModel @Inject constructor( currencyCheck = currencyStatus, isSubtractAvailable = isAmountSubtractAvailable, feeError = feeError, + yield = yield, ), ) }