Updated on 2026-08-14

This commit is contained in:
Tangem 2025-11-12 08:24:47 +01:00
parent 4b62c933bf
commit ece6065010
2 changed files with 32 additions and 2 deletions

View file

@ -150,7 +150,16 @@ class GetOnrampAllOffersUseCase(
}
private fun sortOffers(methodOffers: List<OnrampOffer>): List<OnrampOffer> {
return methodOffers.sortedByDescending { offer ->
val (availableOffers, unavailableOffers) = methodOffers.partition { it.quote is OnrampQuote.Data }
val sortedAvailableOffers = sortAvailableOffers(availableOffers)
val sortedUnavailableOffers = sortUnavailableOffers(unavailableOffers)
return sortedAvailableOffers + sortedUnavailableOffers
}
private fun sortAvailableOffers(availableOffers: List<OnrampOffer>): List<OnrampOffer> {
return availableOffers.sortedByDescending { offer ->
when (val quote = offer.quote) {
is OnrampQuote.Data -> quote.toAmount.value
else -> BigDecimal.ZERO
@ -158,6 +167,27 @@ class GetOnrampAllOffersUseCase(
}
}
private fun sortUnavailableOffers(unavailableOffers: List<OnrampOffer>): List<OnrampOffer> {
if (unavailableOffers.isEmpty()) return emptyList()
val (amountErrorOffers, otherOffers) = unavailableOffers.partition { it.quote is OnrampQuote.AmountError }
if (amountErrorOffers.isEmpty()) return otherOffers
val (tooSmallOffers, tooBigOffers) = amountErrorOffers.partition { offer ->
val error = (offer.quote as OnrampQuote.AmountError).error
error is OnrampError.AmountError.TooSmallError
}
val sortedTooSmallOffers = tooSmallOffers.sortedBy { offer ->
(offer.quote as OnrampQuote.AmountError).error.requiredAmount
}
val sortedTooBigOffers = tooBigOffers.sortedByDescending { offer ->
(offer.quote as OnrampQuote.AmountError).error.requiredAmount
}
return sortedTooSmallOffers + sortedTooBigOffers + otherOffers
}
private fun countUniqueProviders(methodOffers: List<OnrampOffer>): Int {
return methodOffers.map { it.quote.provider.id }.distinct().size
}

View file

@ -173,7 +173,7 @@ class GetOnrampOffersUseCase(
rateDif = if (bestRateOffer != null) recentOffer.rateDif else null,
),
),
hasMoreOffers = false,
hasMoreOffers = hasMoreOffers,
),
)
}