From 4c373e75430499d229fdcb7a5d8b08870568df1a Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 25 Sep 2024 20:31:57 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../feature/swap/DefaultSwapRepository.kt | 20 +++--- .../swap/converters/ErrorsDataConverter.kt | 61 ++++++++++--------- .../feature/swap/domain/api/SwapRepository.kt | 8 +-- .../{DataError.kt => ExpressDataError.kt} | 41 +++++++------ .../swap/domain/models/ExpressException.kt | 2 +- .../swap/domain/models/ui/SwapState.kt | 4 +- .../feature/swap/domain/SwapInteractorImpl.kt | 12 ++-- .../tangem/feature/swap/ui/StateBuilder.kt | 38 ++++++------ .../feature/swap/viewmodels/SwapViewModel.kt | 8 +-- 9 files changed, 99 insertions(+), 95 deletions(-) rename features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/{DataError.kt => ExpressDataError.kt} (59%) diff --git a/features/swap/data/src/main/java/com/tangem/feature/swap/DefaultSwapRepository.kt b/features/swap/data/src/main/java/com/tangem/feature/swap/DefaultSwapRepository.kt index f3a0d6cbe4..f55cfe8655 100644 --- a/features/swap/data/src/main/java/com/tangem/feature/swap/DefaultSwapRepository.kt +++ b/features/swap/data/src/main/java/com/tangem/feature/swap/DefaultSwapRepository.kt @@ -27,7 +27,7 @@ import com.tangem.domain.wallets.legacy.UserWalletsListManager import com.tangem.domain.wallets.models.UserWalletId import com.tangem.feature.swap.converters.* import com.tangem.feature.swap.domain.api.SwapRepository -import com.tangem.feature.swap.domain.models.DataError +import com.tangem.feature.swap.domain.models.ExpressDataError import com.tangem.feature.swap.domain.models.ExpressException import com.tangem.feature.swap.domain.models.createFromAmountWithOffset import com.tangem.feature.swap.domain.models.domain.* @@ -196,7 +196,7 @@ internal class DefaultSwapRepository @Inject constructor( toDecimals: Int, providerId: String, rateType: RateType, - ): Either { + ): Either { return withContext(coroutineDispatcher.io) { try { val response = tangemExpressApi.getExchangeQuote( @@ -234,7 +234,7 @@ internal class DefaultSwapRepository @Inject constructor( toAddress: String, refundAddress: String?, // for cex only refundExtraId: String?, // for cex only - ): Either { + ): Either { return withContext(coroutineDispatcher.io) { try { val requestId = UUID.randomUUID().toString() @@ -256,12 +256,12 @@ internal class DefaultSwapRepository @Inject constructor( ).getOrThrow() if (dataSignatureVerifier.verifySignature(response.signature, response.txDetailsJson)) { val txDetails = parseTxDetails(response.txDetailsJson) - ?: return@withContext DataError.UnknownError.left() + ?: return@withContext ExpressDataError.UnknownError.left() if (txDetails.requestId != requestId) { - return@withContext DataError.InvalidRequestIdError().left() + return@withContext ExpressDataError.InvalidRequestIdError().left() } if (!toAddress.equals(txDetails.payoutAddress, ignoreCase = true)) { - return@withContext DataError.InvalidPayoutAddressError().left() + return@withContext ExpressDataError.InvalidPayoutAddressError().left() } expressDataConverter.convert( ExchangeDataResponseWithTxDetails( @@ -270,7 +270,7 @@ internal class DefaultSwapRepository @Inject constructor( ), ).right() } else { - DataError.InvalidSignatureError().left() + ExpressDataError.InvalidSignatureError().left() } } catch (ex: Exception) { getDataError(ex).left() @@ -285,7 +285,7 @@ internal class DefaultSwapRepository @Inject constructor( payInAddress: String, txHash: String, payInExtraId: String?, - ): Either = withContext(coroutineDispatcher.io) { + ): Either = withContext(coroutineDispatcher.io) { try { tangemExpressApi.exchangeSent( ExchangeSentRequestBody( @@ -400,11 +400,11 @@ internal class DefaultSwapRepository @Inject constructor( ) } - private fun getDataError(ex: Exception): DataError { + private fun getDataError(ex: Exception): ExpressDataError { return if (ex is ApiResponseError.HttpException) { errorsDataConverter.convert(ex.errorBody ?: "") } else { - DataError.UnknownError + ExpressDataError.UnknownError } } } \ No newline at end of file diff --git a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ErrorsDataConverter.kt b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ErrorsDataConverter.kt index ee0cf5d41d..9fc5d1725d 100644 --- a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ErrorsDataConverter.kt +++ b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ErrorsDataConverter.kt @@ -3,76 +3,77 @@ package com.tangem.feature.swap.converters import com.squareup.moshi.JsonAdapter import com.tangem.datasource.api.express.models.response.ExpressError import com.tangem.datasource.api.express.models.response.ExpressErrorResponse -import com.tangem.feature.swap.domain.models.DataError +import com.tangem.feature.swap.domain.models.ExpressDataError import com.tangem.feature.swap.domain.models.createFromAmountWithOffset import com.tangem.utils.converter.Converter internal class ErrorsDataConverter( private val jsonAdapter: JsonAdapter, -) : Converter { +) : Converter { @Suppress("MagicNumber", "CyclomaticComplexMethod") - override fun convert(value: String): DataError { + override fun convert(value: String): ExpressDataError { try { - val error = jsonAdapter.fromJson(value)?.error ?: return DataError.UnknownError + val error = jsonAdapter.fromJson(value)?.error ?: return ExpressDataError.UnknownError return when (error.code) { - 2010 -> DataError.BadRequest(code = error.code) - 2200 -> DataError.SwapsAreUnavailableNowError(code = error.code) - 2210 -> DataError.ExchangeProviderNotFoundError(code = error.code) - 2220 -> DataError.ExchangeProviderNotActiveError(code = error.code) - 2230 -> DataError.ExchangeProviderNotAvailableError(code = error.code) - 2231 -> DataError.ExchangeProviderProviderInternalError(code = error.code) - 2240 -> DataError.ExchangeNotPossibleError(code = error.code) + 2010 -> ExpressDataError.BadRequest(code = error.code) + 2200 -> ExpressDataError.SwapsAreUnavailableNowError(code = error.code) + 2210 -> ExpressDataError.ExchangeProviderNotFoundError(code = error.code) + 2220 -> ExpressDataError.ExchangeProviderNotActiveError(code = error.code) + 2230 -> ExpressDataError.ExchangeProviderNotAvailableError(code = error.code) + 2231 -> ExpressDataError.ExchangeProviderProviderInternalError(code = error.code) + 2240 -> ExpressDataError.ExchangeNotPossibleError(code = error.code) 2250 -> tryParseExchangeTooSmallAmountError(error = error) 2251 -> tryParseExchangeTooBigAmountError(error = error) 2260 -> tryParseExchangeNotEnoughAllowanceError(error = error) - 2270 -> DataError.ExchangeNotEnoughBalanceError(code = error.code) - 2280 -> DataError.ExchangeInvalidAddressError(code = error.code) + 2270 -> ExpressDataError.ExchangeNotEnoughBalanceError(code = error.code) + 2280 -> ExpressDataError.ExchangeInvalidAddressError(code = error.code) 2290 -> tryParseExchangeInvalidFromDecimalsError(error = error) - else -> DataError.UnknownErrorWithCode(error.code) + else -> ExpressDataError.UnknownErrorWithCode(error.code) } } catch (e: Exception) { - return DataError.UnknownError + return ExpressDataError.UnknownError } } - private fun tryParseExchangeTooSmallAmountError(error: ExpressError): DataError { - val minAmount = error.value?.minAmount ?: return DataError.UnknownErrorWithCode(error.code) - val decimals = error.value?.decimals ?: return DataError.UnknownErrorWithCode(error.code) + private fun tryParseExchangeTooSmallAmountError(error: ExpressError): ExpressDataError { + val minAmount = error.value?.minAmount ?: return ExpressDataError.UnknownErrorWithCode(error.code) + val decimals = error.value?.decimals ?: return ExpressDataError.UnknownErrorWithCode(error.code) - return DataError.ExchangeTooSmallAmountError( + return ExpressDataError.ExchangeTooSmallAmountError( code = error.code, amount = createFromAmountWithOffset(minAmount, decimals), ) } - private fun tryParseExchangeTooBigAmountError(error: ExpressError): DataError { - val minAmount = error.value?.maxAmount ?: return DataError.UnknownErrorWithCode(error.code) - val decimals = error.value?.decimals ?: return DataError.UnknownErrorWithCode(error.code) + private fun tryParseExchangeTooBigAmountError(error: ExpressError): ExpressDataError { + val minAmount = error.value?.maxAmount ?: return ExpressDataError.UnknownErrorWithCode(error.code) + val decimals = error.value?.decimals ?: return ExpressDataError.UnknownErrorWithCode(error.code) - return DataError.ExchangeTooBigAmountError( + return ExpressDataError.ExchangeTooBigAmountError( code = error.code, amount = createFromAmountWithOffset(minAmount, decimals), ) } - private fun tryParseExchangeNotEnoughAllowanceError(error: ExpressError): DataError { - val currentAllowance = error.value?.currentAllowance ?: return DataError.UnknownErrorWithCode(error.code) + private fun tryParseExchangeNotEnoughAllowanceError(error: ExpressError): ExpressDataError { + val currentAllowance = error.value?.currentAllowance ?: return ExpressDataError.UnknownErrorWithCode(error.code) - return DataError.ExchangeNotEnoughAllowanceError( + return ExpressDataError.ExchangeNotEnoughAllowanceError( code = error.code, currentAllowance = currentAllowance, ) } - private fun tryParseExchangeInvalidFromDecimalsError(error: ExpressError): DataError { - val receivedFromDecimals = error.value?.receivedFromDecimals ?: return DataError.UnknownErrorWithCode( + private fun tryParseExchangeInvalidFromDecimalsError(error: ExpressError): ExpressDataError { + val receivedFromDecimals = error.value?.receivedFromDecimals ?: return ExpressDataError.UnknownErrorWithCode( code = error.code, ) - val expressFromDecimals = error.value?.expressFromDecimals ?: return DataError.UnknownErrorWithCode(error.code) + val expressFromDecimals = + error.value?.expressFromDecimals ?: return ExpressDataError.UnknownErrorWithCode(error.code) - return DataError.ExchangeInvalidFromDecimalsError( + return ExpressDataError.ExchangeInvalidFromDecimalsError( code = error.code, receivedFromDecimals = receivedFromDecimals, expressFromDecimals = expressFromDecimals, diff --git a/features/swap/domain/api/src/main/java/com/tangem/feature/swap/domain/api/SwapRepository.kt b/features/swap/domain/api/src/main/java/com/tangem/feature/swap/domain/api/SwapRepository.kt index 99bc772d79..0f47053aa3 100644 --- a/features/swap/domain/api/src/main/java/com/tangem/feature/swap/domain/api/SwapRepository.kt +++ b/features/swap/domain/api/src/main/java/com/tangem/feature/swap/domain/api/SwapRepository.kt @@ -3,7 +3,7 @@ package com.tangem.feature.swap.domain.api import arrow.core.Either import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.wallets.models.UserWalletId -import com.tangem.feature.swap.domain.models.DataError +import com.tangem.feature.swap.domain.models.ExpressDataError import com.tangem.feature.swap.domain.models.domain.* import java.math.BigDecimal @@ -27,7 +27,7 @@ interface SwapRepository { toDecimals: Int, providerId: String, rateType: RateType, - ): Either + ): Either @Suppress("LongParameterList") @Throws(IllegalStateException::class) @@ -66,7 +66,7 @@ interface SwapRepository { toAddress: String, refundAddress: String? = null, // for cex only refundExtraId: String? = null, // for cex only - ): Either + ): Either // TODO: Add target error handling, remove either ([REDACTED_JIRA]) @Suppress("LongParameterList") @@ -77,7 +77,7 @@ interface SwapRepository { payInAddress: String, txHash: String, payInExtraId: String?, - ): Either + ): Either fun getNativeTokenForNetwork(networkId: String): CryptoCurrency } \ No newline at end of file diff --git a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/DataError.kt b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ExpressDataError.kt similarity index 59% rename from features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/DataError.kt rename to features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ExpressDataError.kt index 12e5db5e37..b2ac31292d 100644 --- a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/DataError.kt +++ b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ExpressDataError.kt @@ -2,49 +2,52 @@ package com.tangem.feature.swap.domain.models import java.math.BigDecimal -sealed class DataError { +sealed class ExpressDataError { abstract val code: Int - data class BadRequest(override val code: Int) : DataError() + data class BadRequest(override val code: Int) : ExpressDataError() - data class SwapsAreUnavailableNowError(override val code: Int) : DataError() + data class SwapsAreUnavailableNowError(override val code: Int) : ExpressDataError() - data class ExchangeProviderNotFoundError(override val code: Int) : DataError() + data class ExchangeProviderNotFoundError(override val code: Int) : ExpressDataError() - data class ExchangeProviderNotActiveError(override val code: Int) : DataError() + data class ExchangeProviderNotActiveError(override val code: Int) : ExpressDataError() - data class ExchangeProviderNotAvailableError(override val code: Int) : DataError() + data class ExchangeProviderNotAvailableError(override val code: Int) : ExpressDataError() - data class ExchangeProviderProviderInternalError(override val code: Int) : DataError() + data class ExchangeProviderProviderInternalError(override val code: Int) : ExpressDataError() - data class ExchangeNotPossibleError(override val code: Int) : DataError() + data class ExchangeNotPossibleError(override val code: Int) : ExpressDataError() - data class ExchangeTooSmallAmountError(override val code: Int, val amount: SwapAmount) : DataError() + data class ExchangeTooSmallAmountError(override val code: Int, val amount: SwapAmount) : ExpressDataError() - data class ExchangeTooBigAmountError(override val code: Int, val amount: SwapAmount) : DataError() + data class ExchangeTooBigAmountError(override val code: Int, val amount: SwapAmount) : ExpressDataError() - data class ExchangeNotEnoughAllowanceError(override val code: Int, val currentAllowance: BigDecimal) : DataError() + data class ExchangeNotEnoughAllowanceError( + override val code: Int, + val currentAllowance: BigDecimal, + ) : ExpressDataError() - data class ExchangeNotEnoughBalanceError(override val code: Int) : DataError() + data class ExchangeNotEnoughBalanceError(override val code: Int) : ExpressDataError() - data class ExchangeInvalidAddressError(override val code: Int) : DataError() + data class ExchangeInvalidAddressError(override val code: Int) : ExpressDataError() data class ExchangeInvalidFromDecimalsError( override val code: Int, val receivedFromDecimals: Int, val expressFromDecimals: Int, - ) : DataError() + ) : ExpressDataError() - data class UnknownErrorWithCode(override val code: Int) : DataError() + data class UnknownErrorWithCode(override val code: Int) : ExpressDataError() - data class InvalidSignatureError(override val code: Int = 990) : DataError() + data class InvalidSignatureError(override val code: Int = 990) : ExpressDataError() - data class InvalidRequestIdError(override val code: Int = 991) : DataError() + data class InvalidRequestIdError(override val code: Int = 991) : ExpressDataError() - data class InvalidPayoutAddressError(override val code: Int = 992) : DataError() + data class InvalidPayoutAddressError(override val code: Int = 992) : ExpressDataError() - data object UnknownError : DataError() { + data object UnknownError : ExpressDataError() { override val code: Int = -1 } } \ No newline at end of file diff --git a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ExpressException.kt b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ExpressException.kt index cc416b82ca..0c4a1fc3de 100644 --- a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ExpressException.kt +++ b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ExpressException.kt @@ -1,3 +1,3 @@ package com.tangem.feature.swap.domain.models -class ExpressException(val dataError: DataError) : Exception() \ No newline at end of file +class ExpressException(val expressDataError: ExpressDataError) : Exception() \ No newline at end of file diff --git a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ui/SwapState.kt b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ui/SwapState.kt index 854e53526b..04b5faf49e 100644 --- a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ui/SwapState.kt +++ b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/ui/SwapState.kt @@ -1,7 +1,7 @@ package com.tangem.feature.swap.domain.models.ui import com.tangem.domain.tokens.model.CryptoCurrencyStatus -import com.tangem.feature.swap.domain.models.DataError +import com.tangem.feature.swap.domain.models.ExpressDataError import com.tangem.feature.swap.domain.models.SwapAmount import com.tangem.feature.swap.domain.models.domain.* import java.math.BigDecimal @@ -34,7 +34,7 @@ sealed interface SwapState { data class SwapError( val fromTokenInfo: TokenSwapInfo, - val error: DataError, + val error: ExpressDataError, val includeFeeInAmount: IncludeFeeInAmount, ) : SwapState } diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt index 541327a97a..45a5990989 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt @@ -30,7 +30,7 @@ import com.tangem.domain.wallets.models.UserWalletId import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.feature.swap.domain.api.SwapRepository import com.tangem.feature.swap.domain.converters.SwapCurrencyConverter -import com.tangem.feature.swap.domain.models.DataError +import com.tangem.feature.swap.domain.models.ExpressDataError import com.tangem.feature.swap.domain.models.SwapAmount import com.tangem.feature.swap.domain.models.domain.* import com.tangem.feature.swap.domain.models.toStringWithRightOffset @@ -1057,7 +1057,7 @@ internal class SwapInteractorImpl @AssistedInject constructor( @Suppress("LongMethod") private suspend fun getQuotesState( provider: SwapProvider, - quoteDataModel: Either, + quoteDataModel: Either, amount: SwapAmount, fromToken: CryptoCurrencyStatus, toToken: CryptoCurrencyStatus, @@ -1136,7 +1136,7 @@ internal class SwapInteractorImpl @AssistedInject constructor( fromToken = fromToken, amount = amount, includeFeeInAmount = includeFeeInAmount, - dataError = error, + expressDataError = error, ) }, ) @@ -1146,7 +1146,7 @@ internal class SwapInteractorImpl @AssistedInject constructor( fromToken: CryptoCurrencyStatus, amount: SwapAmount, includeFeeInAmount: IncludeFeeInAmount, - dataError: DataError, + expressDataError: ExpressDataError, ): SwapState.SwapError { val rates = getQuotes(fromToken.currency.id) val fromTokenSwapInfo = TokenSwapInfo( @@ -1155,7 +1155,7 @@ internal class SwapInteractorImpl @AssistedInject constructor( ?: BigDecimal.ZERO, cryptoCurrencyStatus = fromToken, ) - return SwapState.SwapError(fromTokenSwapInfo, dataError, includeFeeInAmount) + return SwapState.SwapError(fromTokenSwapInfo, expressDataError, includeFeeInAmount) } @Suppress("CyclomaticComplexMethod") @@ -1502,7 +1502,7 @@ internal class SwapInteractorImpl @AssistedInject constructor( fromToken = fromTokenStatus, amount = swapAmount, includeFeeInAmount = IncludeFeeInAmount.Excluded, - dataError = DataError.UnknownError, + expressDataError = ExpressDataError.UnknownError, ) } } 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 2575e2d24b..96ae124966 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 @@ -16,7 +16,7 @@ import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.feature.swap.converters.SwapTransactionErrorStateConverter import com.tangem.feature.swap.converters.TokensDataConverter -import com.tangem.feature.swap.domain.models.DataError +import com.tangem.feature.swap.domain.models.ExpressDataError import com.tangem.feature.swap.domain.models.SwapAmount import com.tangem.feature.swap.domain.models.domain.* import com.tangem.feature.swap.domain.models.formatToUIRepresentation @@ -632,13 +632,13 @@ internal class StateBuilder( fromToken: TokenSwapInfo, toToken: CryptoCurrencyStatus?, includeFeeInAmount: IncludeFeeInAmount, - dataError: DataError, + expressDataError: ExpressDataError, isReverseSwapPossible: Boolean, ): SwapStateHolder { if (uiStateHolder.sendCardData !is SwapCardState.SwapCardData) return uiStateHolder if (uiStateHolder.receiveCardData !is SwapCardState.SwapCardData) return uiStateHolder val warnings = mutableListOf() - warnings.add(getWarningForError(dataError, fromToken.cryptoCurrencyStatus.currency)) + warnings.add(getWarningForError(expressDataError, fromToken.cryptoCurrencyStatus.currency)) if (includeFeeInAmount is IncludeFeeInAmount.Included && uiStateHolder.fee is FeeItemState.Content) { val feeCoverageNotification = createNetworkFeeCoverageNotificationConfig( uiStateHolder.fee.amountCrypto, @@ -649,7 +649,7 @@ internal class StateBuilder( val providerState = getProviderStateForError( swapProvider = swapProvider, fromToken = fromToken.cryptoCurrencyStatus.currency, - dataError = dataError, + expressDataError = expressDataError, onProviderClick = actions.onProviderClick, selectionType = ProviderState.SelectionType.CLICK, ) @@ -705,28 +705,28 @@ internal class StateBuilder( private fun getProviderStateForError( swapProvider: SwapProvider, fromToken: CryptoCurrency, - dataError: DataError, + expressDataError: ExpressDataError, onProviderClick: (String) -> Unit, selectionType: ProviderState.SelectionType, ): ProviderState { - return when (dataError) { - is DataError.ExchangeTooSmallAmountError -> { + return when (expressDataError) { + is ExpressDataError.ExchangeTooSmallAmountError -> { swapProvider.convertToAvailableFromProviderState( swapProvider = swapProvider, alertText = resourceReference( R.string.express_provider_min_amount, - wrappedList(dataError.amount.getFormattedCryptoAmount(fromToken)), + wrappedList(expressDataError.amount.getFormattedCryptoAmount(fromToken)), ), selectionType = selectionType, onProviderClick = onProviderClick, ) } - is DataError.ExchangeTooBigAmountError -> { + is ExpressDataError.ExchangeTooBigAmountError -> { swapProvider.convertToAvailableFromProviderState( swapProvider = swapProvider, alertText = resourceReference( R.string.express_provider_max_amount, - wrappedList(dataError.amount.getFormattedCryptoAmount(fromToken)), + wrappedList(expressDataError.amount.getFormattedCryptoAmount(fromToken)), ), selectionType = selectionType, onProviderClick = onProviderClick, @@ -738,25 +738,25 @@ internal class StateBuilder( } } - private fun getWarningForError(dataError: DataError, fromToken: CryptoCurrency): SwapWarning { - val providerErrorMessage = getProviderErrorMessage(dataError) - val providerErrorTitle = getProviderErrorTitle(dataError) - return when (dataError) { - is DataError.ExchangeTooSmallAmountError -> SwapWarning.GeneralError( + private fun getWarningForError(expressDataError: ExpressDataError, fromToken: CryptoCurrency): SwapWarning { + val providerErrorMessage = getExpressErrorMessage(expressDataError) + val providerErrorTitle = getExpressErrorTitle(expressDataError) + return when (expressDataError) { + is ExpressDataError.ExchangeTooSmallAmountError -> SwapWarning.GeneralError( notificationConfig = NotificationConfig( title = resourceReference( id = R.string.warning_express_too_minimal_amount_title, - formatArgs = wrappedList(dataError.amount.getFormattedCryptoAmount(fromToken)), + formatArgs = wrappedList(expressDataError.amount.getFormattedCryptoAmount(fromToken)), ), subtitle = resourceReference(R.string.warning_express_wrong_amount_description), iconResId = R.drawable.ic_alert_circle_24, ), ) - is DataError.ExchangeTooBigAmountError -> SwapWarning.GeneralError( + is ExpressDataError.ExchangeTooBigAmountError -> SwapWarning.GeneralError( notificationConfig = NotificationConfig( title = resourceReference( id = R.string.warning_express_too_maximum_amount_title, - formatArgs = wrappedList(dataError.amount.getFormattedCryptoAmount(fromToken)), + formatArgs = wrappedList(expressDataError.amount.getFormattedCryptoAmount(fromToken)), ), subtitle = resourceReference(R.string.warning_express_wrong_amount_description), iconResId = R.drawable.ic_alert_circle_24, @@ -1399,7 +1399,7 @@ internal class StateBuilder( is SwapState.SwapError -> getProviderStateForError( swapProvider = provider, fromToken = state.fromTokenInfo.cryptoCurrencyStatus.currency, - dataError = state.error, + expressDataError = state.error, onProviderClick = onProviderSelect, selectionType = ProviderState.SelectionType.SELECT, ) 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 e88d4698d1..973778874e 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 @@ -36,7 +36,7 @@ import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.feature.swap.analytics.SwapEvents import com.tangem.feature.swap.domain.BlockchainInteractor import com.tangem.feature.swap.domain.SwapInteractor -import com.tangem.feature.swap.domain.models.DataError +import com.tangem.feature.swap.domain.models.ExpressDataError import com.tangem.feature.swap.domain.models.ExpressException import com.tangem.feature.swap.domain.models.SwapAmount import com.tangem.feature.swap.domain.models.domain.* @@ -243,7 +243,7 @@ internal class SwapViewModel @Inject constructor( uiState = stateBuilder.createInitialErrorState( uiState, - (it as? ExpressException)?.dataError?.code ?: DataError.UnknownError.code, + (it as? ExpressException)?.expressDataError?.code ?: ExpressDataError.UnknownError.code, ) { uiState = stateBuilder.createInitialLoadingState( initialCurrency = initialCryptoCurrency, @@ -431,7 +431,7 @@ internal class SwapViewModel @Inject constructor( swapProvider = provider, fromToken = state.fromTokenInfo, toToken = dataState.toCryptoCurrency, - dataError = state.error, + expressDataError = state.error, includeFeeInAmount = state.includeFeeInAmount, isReverseSwapPossible = isReverseSwapPossible(), ) @@ -440,7 +440,7 @@ internal class SwapViewModel @Inject constructor( } } - private fun sendErrorAnalyticsEvent(error: DataError, provider: SwapProvider) { + private fun sendErrorAnalyticsEvent(error: ExpressDataError, provider: SwapProvider) { val receiveToken = dataState.toCryptoCurrency?.currency?.let { "${it.network.backendId}:${it.symbol}" }