Updated on 2026-08-14
This commit is contained in:
commit
7d09f26d5c
3 changed files with 34 additions and 13 deletions
|
|
@ -52,19 +52,23 @@ internal class CoinsPagingSource(
|
|||
suffix = CryptoCurrency.ID.Suffix.RawID(coin.id),
|
||||
)
|
||||
}
|
||||
val quotes = quotesRepository.getQuotesSync(currenciesIds = coinsIds.toSet(), refresh = false)
|
||||
|
||||
LoadResult.Page(
|
||||
data = CoinsResponseConverter.convert(
|
||||
CoinsData(
|
||||
response.coins,
|
||||
response.imageHost,
|
||||
quotes,
|
||||
try {
|
||||
val quotes = quotesRepository.getQuotesSync(currenciesIds = coinsIds.toSet(), refresh = false)
|
||||
LoadResult.Page(
|
||||
data = CoinsResponseConverter.convert(
|
||||
CoinsData(
|
||||
response.coins,
|
||||
response.imageHost,
|
||||
quotes,
|
||||
),
|
||||
),
|
||||
),
|
||||
prevKey = if (page == 0) null else page.minus(other = 1),
|
||||
nextKey = if (response.coins.isEmpty()) null else page.plus(other = 1),
|
||||
)
|
||||
prevKey = if (page == 0) null else page.minus(other = 1),
|
||||
nextKey = if (response.coins.isEmpty()) null else page.plus(other = 1),
|
||||
)
|
||||
} catch (t: Throwable) {
|
||||
LoadResult.Error(t)
|
||||
}
|
||||
},
|
||||
onFailure = { LoadResult.Error(it) },
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1814,13 +1814,21 @@ internal class SwapInteractorImpl @Inject constructor(
|
|||
}
|
||||
|
||||
private suspend fun getQuotes(vararg ids: CryptoCurrency.ID): Map<CryptoCurrency.ID, Quote> {
|
||||
val set = quotesRepository.getQuotesSync(ids.toSet(), false)
|
||||
val set = ids.toSet().getQuotesOrEmpty(false)
|
||||
|
||||
return ids
|
||||
.mapNotNull { id -> set.find { it.rawCurrencyId == id.rawCurrencyId }?.let { id to it } }
|
||||
.toMap()
|
||||
}
|
||||
|
||||
private suspend fun Set<CryptoCurrency.ID>.getQuotesOrEmpty(refresh: Boolean): Set<Quote> {
|
||||
return try {
|
||||
quotesRepository.getQuotesSync(this, refresh)
|
||||
} catch (t: Throwable) {
|
||||
emptySet()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getDemoFees(cryptoCurrency: CryptoCurrency): ProxyFees.MultipleFees {
|
||||
val demoFee = ProxyAmount(
|
||||
currencySymbol = cryptoCurrency.symbol,
|
||||
|
|
|
|||
|
|
@ -70,7 +70,8 @@ internal class ExchangeStatusFactory(
|
|||
.map { savedTransactions ->
|
||||
val quotes = savedTransactions
|
||||
?.flatMap { setOf(it.fromCryptoCurrency.id, it.toCryptoCurrency.id) }
|
||||
?.let { quotesRepository.getQuotesSync(it.toSet(), true) }
|
||||
?.toSet()
|
||||
?.getQuotesOrEmpty(true)
|
||||
?: emptySet()
|
||||
|
||||
getExchangeStatusState(
|
||||
|
|
@ -176,4 +177,12 @@ internal class ExchangeStatusFactory(
|
|||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun Set<CryptoCurrency.ID>.getQuotesOrEmpty(refresh: Boolean): Set<Quote> {
|
||||
return try {
|
||||
quotesRepository.getQuotesSync(this, refresh)
|
||||
} catch (t: Throwable) {
|
||||
emptySet()
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue