From 56c32291f290d0f7073fae00dd302ea1a8d11907 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 7 Dec 2023 18:03:55 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/feature/swap/ui/StateBuilder.kt | 43 ++++++++++--------- .../feature/swap/viewmodels/SwapViewModel.kt | 5 +-- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt index a1c6e1e09f..74a81982cb 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt @@ -20,6 +20,7 @@ import com.tangem.feature.swap.domain.models.ui.* import com.tangem.feature.swap.models.* import com.tangem.feature.swap.models.states.* import com.tangem.feature.swap.presentation.R +import com.tangem.feature.swap.viewmodels.SwapProcessDataState import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import java.math.BigDecimal @@ -638,38 +639,40 @@ internal class StateBuilder( @Suppress("LongParameterList") fun createSuccessState( uiState: SwapStateHolder, - txState: TxState.TxSent, - fromAmount: BigDecimal, - toAmount: BigDecimal, + timeStamp: Long, txUrl: String, + dataState: SwapProcessDataState, onExploreClick: () -> Unit, onStatusClick: () -> Unit, ): SwapStateHolder { + val fee = requireNotNull(dataState.selectedFee) + val fromCryptoCurrency = requireNotNull(dataState.fromCryptoCurrency) + val toCryptoCurrency = requireNotNull(dataState.toCryptoCurrency) + val fromAmount = requireNotNull(dataState.amount?.toBigDecimal()) + val toAmount = requireNotNull(dataState.swapDataModel?.toTokenAmount?.value) val providerState = uiState.providerState as ProviderState.Content - val fromToken = requireNotNull((uiState.sendCardData as? SwapCardState.SwapCardData)?.token) - val toToken = requireNotNull((uiState.receiveCardData as? SwapCardState.SwapCardData)?.token) - val fromTokenIconState = iconStateConverter.convert(fromToken) - val toTokenIconState = iconStateConverter.convert(toToken) - val fee = uiState.fee as? FeeItemState.Content ?: return uiState - val fromFiatAmount = getFormattedFiatAmount(fromToken.value.fiatRate?.multiply(fromAmount)) - val toFiatAmount = getFormattedFiatAmount(toToken.value.fiatRate?.multiply(toAmount)) + + val fromCryptoAmount = BigDecimalFormatter.formatCryptoAmount(fromAmount, fromCryptoCurrency.currency) + val toCryptoAmount = BigDecimalFormatter.formatCryptoAmount(toAmount, toCryptoCurrency.currency) + val fromFiatAmount = getFormattedFiatAmount(fromCryptoCurrency.value.fiatRate?.multiply(fromAmount)) + val toFiatAmount = getFormattedFiatAmount(toCryptoCurrency.value.fiatRate?.multiply(toAmount)) return uiState.copy( successState = SwapSuccessStateHolder( - timestamp = txState.timestamp, + timestamp = timeStamp, txUrl = txUrl, - providerName = TextReference.Str(providerState.name), - providerType = TextReference.Str(providerState.type), + providerName = stringReference(providerState.name), + providerType = stringReference(providerState.type), showStatusButton = providerState.type == ExchangeProviderType.CEX.name, providerIcon = providerState.iconUrl, - fee = TextReference.Str("${fee.amountCrypto} ${fee.symbolCrypto} (${fee.amountFiatFormatted})"), rate = providerState.subtitle, - fromTokenAmount = TextReference.Str(txState.fromAmount.orEmpty()), - toTokenAmount = TextReference.Str(txState.toAmount.orEmpty()), - fromTokenFiatAmount = TextReference.Str(fromFiatAmount), - toTokenFiatAmount = TextReference.Str(toFiatAmount), - fromTokenIconState = fromTokenIconState, - toTokenIconState = toTokenIconState, + fee = stringReference("${fee.feeCryptoFormatted} (${fee.feeFiatFormatted})"), + fromTokenAmount = stringReference(fromCryptoAmount), + toTokenAmount = stringReference(toCryptoAmount), + fromTokenFiatAmount = stringReference(fromFiatAmount), + toTokenFiatAmount = stringReference(toFiatAmount), + fromTokenIconState = iconStateConverter.convert(fromCryptoCurrency), + toTokenIconState = iconStateConverter.convert(toCryptoCurrency), onExploreButtonClick = onExploreClick, onStatusButtonClick = onStatusClick, ), diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt index 1485871552..b2ba4e8a24 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt @@ -457,9 +457,8 @@ internal class SwapViewModel @Inject constructor( ) uiState = stateBuilder.createSuccessState( uiState = uiState, - txState = it, - fromAmount = dataState.amount?.toBigDecimal() ?: BigDecimal.ZERO, - toAmount = dataState.swapDataModel?.toTokenAmount?.value ?: BigDecimal.ZERO, + timeStamp = it.timestamp, + dataState = dataState, txUrl = url, onExploreClick = { val txHash = it.txAddress