Updated on 2026-08-14

This commit is contained in:
Tangem 2024-07-16 17:11:20 +01:00
commit 7d09f26d5c
3 changed files with 34 additions and 13 deletions

View file

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

View file

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

View file

@ -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()
}
}
}