diff --git a/domain/onramp/models/src/main/kotlin/com/tangem/domain/onramp/model/OnrampProviderWithQuote.kt b/domain/onramp/models/src/main/kotlin/com/tangem/domain/onramp/model/OnrampProviderWithQuote.kt index 2891d6072d..81a3c174d2 100644 --- a/domain/onramp/models/src/main/kotlin/com/tangem/domain/onramp/model/OnrampProviderWithQuote.kt +++ b/domain/onramp/models/src/main/kotlin/com/tangem/domain/onramp/model/OnrampProviderWithQuote.kt @@ -21,7 +21,7 @@ sealed interface OnrampProviderWithQuote { val availablePaymentMethods: List, ) : Unavailable - data class Error( + data class AmountError( override val provider: OnrampProvider, val quoteError: OnrampQuote.AmountError, ) : Unavailable diff --git a/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampProviderWithQuoteUseCase.kt b/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampProviderWithQuoteUseCase.kt index 1d6c6700d6..be975c49dd 100644 --- a/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampProviderWithQuoteUseCase.kt +++ b/domain/onramp/src/main/java/com/tangem/domain/onramp/GetOnrampProviderWithQuoteUseCase.kt @@ -40,7 +40,7 @@ class GetOnrampProviderWithQuoteUseCase( toAmount = matchedQuote.toAmount, fromAmount = matchedQuote.fromAmount, ) - is OnrampQuote.AmountError -> Unavailable.Error( + is OnrampQuote.AmountError -> Unavailable.AmountError( provider = matchedQuote.provider, quoteError = matchedQuote, ) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/providers/model/SelectProviderModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/providers/model/SelectProviderModel.kt index e85759d361..bc077ed6a3 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/providers/model/SelectProviderModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/providers/model/SelectProviderModel.kt @@ -76,10 +76,13 @@ internal class SelectProviderModel @Inject constructor( val filteredEmptyMethods = methods.mapNotNull { method -> val providers = getOnrampProviderWithQuoteUseCase(method).getOrNull() if (!providers.isNullOrEmpty()) { + val allErrorProviders = providers.all { + it is OnrampProviderWithQuote.Unavailable.NotSupportedPaymentMethod + } PaymentProviderUM( paymentMethod = method, providers = providers.toProvidersListItems(), - ) + ).takeIf { !allErrorProviders } } else { null } @@ -225,7 +228,7 @@ internal class SelectProviderModel @Inject constructor( }, ) } - is OnrampProviderWithQuote.Unavailable.Error -> { + is OnrampProviderWithQuote.Unavailable.AmountError -> { val quoteError = quote.quoteError val amount = quoteError.error.requiredAmount.format { crypto(symbol = quoteError.fromAmount.symbol, decimals = quoteError.fromAmount.decimals) @@ -307,7 +310,7 @@ internal class SelectProviderModel @Inject constructor( is OnrampProviderWithQuote.Data -> it.toAmount.value // negative difference to sort both when data and unavailable is present - is OnrampProviderWithQuote.Unavailable.Error -> { + is OnrampProviderWithQuote.Unavailable.AmountError -> { when (val error = it.quoteError.error) { is OnrampError.AmountError.TooSmallError -> it.quoteError.fromAmount.value - error.requiredAmount is OnrampError.AmountError.TooBigError -> error.requiredAmount - it.quoteError.fromAmount.value