Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-25 11:42:59 +05:00
parent 352043ab4f
commit ee4760b7e1
3 changed files with 8 additions and 5 deletions

View file

@ -21,7 +21,7 @@ sealed interface OnrampProviderWithQuote {
val availablePaymentMethods: List<OnrampPaymentMethod>,
) : Unavailable
data class Error(
data class AmountError(
override val provider: OnrampProvider,
val quoteError: OnrampQuote.AmountError,
) : Unavailable

View file

@ -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,
)

View file

@ -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