diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt index f32aabd0e3..54636113ff 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt @@ -16,12 +16,16 @@ import com.tangem.core.analytics.api.ParamsInterceptorHolder import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model import com.tangem.core.decompose.model.ParamsContainer +import com.tangem.core.decompose.ui.UiMessageSender import com.tangem.core.navigation.share.ShareManager import com.tangem.core.navigation.url.UrlOpener +import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.format.bigdecimal.crypto import com.tangem.core.ui.format.bigdecimal.format import com.tangem.core.ui.haptic.TangemHapticEffect import com.tangem.core.ui.haptic.VibratorHapticManager +import com.tangem.core.ui.message.DialogMessage +import com.tangem.features.staking.impl.R import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase import com.tangem.domain.appcurrency.model.AppCurrency import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase @@ -140,6 +144,7 @@ internal class StakingModel @Inject constructor( private val urlOpener: UrlOpener, @DelayedWork private val coroutineScope: CoroutineScope, private val innerRouter: InnerStakingRouter, + private val messageSender: UiMessageSender, appRouter: AppRouter, ) : Model(), StakingClickIntents { @@ -999,7 +1004,12 @@ internal class StakingModel @Inject constructor( network = cryptoCurrencyStatus.currency.network, ).fold( ifLeft = { - stateController.update(DismissBottomSheetStateTransformer) + messageSender.send( + DialogMessage( + title = resourceReference(id = R.string.send_alert_transaction_failed_title), + message = resourceReference(id = R.string.common_unknown_error), + ), + ) }, ifRight = { stateController.update(CompleteInitializeBottomSheetTransformer( diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/ton/CompleteInitializeBottomSheetTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/ton/CompleteInitializeBottomSheetTransformer.kt index 7a9bc02057..b668a11791 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/ton/CompleteInitializeBottomSheetTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/ton/CompleteInitializeBottomSheetTransformer.kt @@ -10,6 +10,7 @@ import com.tangem.features.staking.impl.presentation.state.StakingUiState import com.tangem.features.staking.impl.presentation.state.bottomsheet.TonInitializeAccountBottomSheetConfig import com.tangem.utils.transformer.Transformer import java.math.BigDecimal +import java.math.RoundingMode internal class CompleteInitializeBottomSheetTransformer( private val cryptoCurrencyStatus: CryptoCurrencyStatus, @@ -21,8 +22,10 @@ internal class CompleteInitializeBottomSheetTransformer( val prevBottomSheetConfigContent = prevBottomSheetConfig.content as? TonInitializeAccountBottomSheetConfig ?: return prevState - val feeAmount = (prevBottomSheetConfigContent.feeState as? FeeState.Content) - ?.fee?.amount?.value?.multiply(BigDecimal(FEE_MULTIPLIER)) ?: return prevState + val feeAmount = (prevBottomSheetConfigContent.feeState as? FeeState.Content)?.fee?.amount ?: return prevState + + val multipliedFeeAmount = feeAmount.value?.multiply(BigDecimal(FEE_MULTIPLIER)) + ?.setScale(feeAmount.decimals, RoundingMode.HALF_DOWN) ?: return prevState val confirmationState = prevState.confirmationState as? StakingStates.ConfirmationState.Data ?: return prevState @@ -31,12 +34,12 @@ internal class CompleteInitializeBottomSheetTransformer( cryptoCurrencyStatus = cryptoCurrencyStatus, minimumTransactionAmount = minimumTransactionAmount, value = ReduceByData( - feeAmount, - feeAmount, + multipliedFeeAmount, + multipliedFeeAmount, ), ).transform(prevState.amountState), confirmationState = confirmationState.copy( - reduceAmountBy = feeAmount, + reduceAmountBy = multipliedFeeAmount, ), bottomSheetConfig = prevBottomSheetConfig.copy( content = prevBottomSheetConfigContent.copy(