Updated on 2026-08-14

This commit is contained in:
Tangem 2024-01-10 17:08:25 +03:00
parent 2a36a23f07
commit f6f96ed8b5
4 changed files with 10 additions and 15 deletions

View file

@ -29,11 +29,7 @@ sealed interface SwapState {
val warnings: List<Warning> = emptyList(),
) : SwapState
data class EmptyAmountState(
val fromTokenWalletBalance: String,
val toTokenWalletBalance: String,
val zeroAmountEquivalent: String,
) : SwapState
data class EmptyAmountState(val zeroAmountEquivalent: String) : SwapState
data class SwapError(
val fromTokenInfo: TokenSwapInfo,

View file

@ -237,9 +237,7 @@ internal class SwapInteractorImpl @Inject constructor(
return providers.map { provider ->
val amountDecimal = toBigDecimalOrNull(amountToSwap)
if (amountDecimal == null || amountDecimal.signum() == 0) {
return providers.associateWith {
createEmptyAmountState(fromToken, toToken)
}
return providers.associateWith { createEmptyAmountState() }
}
val amount = SwapAmount(amountDecimal, getTokenDecimals(fromToken.currency))
val isBalanceWithoutFeeEnough = isBalanceEnough(fromToken, amount, null)
@ -698,13 +696,9 @@ internal class SwapInteractorImpl @Inject constructor(
)
}
private fun createEmptyAmountState(fromToken: CryptoCurrencyStatus, toToken: CryptoCurrencyStatus): SwapState {
private fun createEmptyAmountState(): SwapState {
val appCurrency = userWalletManager.getUserAppCurrency()
val fromTokenBalance = getTokenBalance(fromToken)
val toTokenBalance = getTokenBalance(toToken)
return SwapState.EmptyAmountState(
fromTokenWalletBalance = amountFormatter.formatSwapAmountToUI(fromTokenBalance, ""),
toTokenWalletBalance = amountFormatter.formatSwapAmountToUI(toTokenBalance, ""),
zeroAmountEquivalent = BigDecimal.ZERO.toFiatString(
rateValue = BigDecimal.ONE,
fiatCurrencyName = appCurrency.symbol,

View file

@ -558,6 +558,8 @@ internal class StateBuilder(
fun createQuotesEmptyAmountState(
uiStateHolder: SwapStateHolder,
emptyAmountState: SwapState.EmptyAmountState,
fromTokenStatus: CryptoCurrencyStatus,
toTokenStatus: CryptoCurrencyStatus?,
isReverseSwapPossible: Boolean,
): SwapStateHolder {
if (uiStateHolder.sendCardData !is SwapCardState.SwapCardData) return uiStateHolder
@ -574,7 +576,7 @@ internal class StateBuilder(
tokenCurrency = uiStateHolder.sendCardData.tokenCurrency,
canSelectAnotherToken = uiStateHolder.sendCardData.canSelectAnotherToken,
networkIconRes = uiStateHolder.sendCardData.networkIconRes,
balance = emptyAmountState.fromTokenWalletBalance,
balance = fromTokenStatus.getFormattedAmount(isNeedSymbol = false),
isBalanceHidden = isBalanceHiddenProvider(),
),
receiveCardData = SwapCardState.SwapCardData(
@ -588,7 +590,7 @@ internal class StateBuilder(
tokenCurrency = uiStateHolder.receiveCardData.tokenCurrency,
canSelectAnotherToken = uiStateHolder.receiveCardData.canSelectAnotherToken,
networkIconRes = uiStateHolder.receiveCardData.networkIconRes,
balance = emptyAmountState.toTokenWalletBalance,
balance = toTokenStatus?.getFormattedAmount(isNeedSymbol = false) ?: UNKNOWN_AMOUNT_SIGN,
isBalanceHidden = isBalanceHiddenProvider(),
),
warnings = emptyList(),

View file

@ -341,9 +341,12 @@ internal class SwapViewModel @Inject constructor(
}
}
is SwapState.EmptyAmountState -> {
val toTokenStatus = dataState.toCryptoCurrency
uiState = stateBuilder.createQuotesEmptyAmountState(
uiStateHolder = uiState,
emptyAmountState = state,
fromTokenStatus = fromToken,
toTokenStatus = toTokenStatus,
isReverseSwapPossible = isReverseSwapPossible(),
)
}