Updated on 2026-08-14
This commit is contained in:
parent
4b62c933bf
commit
ece6065010
2 changed files with 32 additions and 2 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ class GetOnrampOffersUseCase(
|
|||
rateDif = if (bestRateOffer != null) recentOffer.rateDif else null,
|
||||
),
|
||||
),
|
||||
hasMoreOffers = false,
|
||||
hasMoreOffers = hasMoreOffers,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue