From fb2492eabb84f3f29df79e6f4b536a5496dd42c2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 13 Apr 2026 11:22:18 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../v2/impl/amount/model/SwapAmountModel.kt | 10 ++-- .../SwapAmountChangeAmountTypeTransformer.kt | 51 +++++++++++++++++++ 2 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapAmountChangeAmountTypeTransformer.kt diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt index 23ec462f60..ecc249a62b 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt @@ -215,13 +215,13 @@ internal class SwapAmountModel @Inject constructor( } } - uiState.update { amountUM -> - if (amountUM !is SwapAmountUM.Content) return@update amountUM - amountUM.copy( + uiState.transformerUpdate( + SwapAmountChangeAmountTypeTransformer( selectedAmountType = selectedAmountType, swapRateType = newSwapRateType, - ) - } + isBalanceHidden = params.isBalanceHidingFlow.value, + ), + ) startLoadingQuotesTask(isSilentReload = false) } diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapAmountChangeAmountTypeTransformer.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapAmountChangeAmountTypeTransformer.kt new file mode 100644 index 0000000000..c1fde5d967 --- /dev/null +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapAmountChangeAmountTypeTransformer.kt @@ -0,0 +1,51 @@ +package com.tangem.features.swap.v2.impl.amount.model.transformers + +import com.tangem.domain.express.models.ExpressRateType +import com.tangem.domain.swap.models.SwapAmountType +import com.tangem.features.swap.v2.impl.amount.entity.SwapAmountFieldUM +import com.tangem.features.swap.v2.impl.amount.entity.SwapAmountUM +import com.tangem.features.swap.v2.impl.amount.model.converter.SwapAmountUpdateSubtitleConverter +import com.tangem.utils.transformer.Transformer + +internal class SwapAmountChangeAmountTypeTransformer( + private val selectedAmountType: SwapAmountType, + private val swapRateType: ExpressRateType, + private val isBalanceHidden: Boolean, +) : Transformer { + + override fun transform(prevState: SwapAmountUM): SwapAmountUM { + if (prevState !is SwapAmountUM.Content) return prevState + + val subtitleConverter = SwapAmountUpdateSubtitleConverter( + selectedAmountType = selectedAmountType, + isBalanceHidden = isBalanceHidden, + ) + + val newPrimaryAmount = (prevState.primaryAmount as? SwapAmountFieldUM.Content)?.let { field -> + subtitleConverter.updateSubtitles( + field = field, + cryptoCurrencyStatus = prevState.primaryCryptoCurrencyStatus, + isAmountEmpty = true, + ) + } ?: prevState.primaryAmount + + val newSecondaryAmount = if (prevState.secondaryCryptoCurrencyStatus != null) { + (prevState.secondaryAmount as? SwapAmountFieldUM.Content)?.let { field -> + subtitleConverter.updateSubtitles( + field = field, + cryptoCurrencyStatus = prevState.secondaryCryptoCurrencyStatus, + isAmountEmpty = true, + ) + } ?: prevState.secondaryAmount + } else { + prevState.secondaryAmount + } + + return prevState.copy( + selectedAmountType = selectedAmountType, + swapRateType = swapRateType, + primaryAmount = newPrimaryAmount, + secondaryAmount = newSecondaryAmount, + ) + } +} \ No newline at end of file