From 91b8f48839bc98cea92435fef40bdcf13212b1d0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 19 Sep 2025 14:08:51 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../data/common/quote/DefaultQuotesFetcher.kt | 15 +++++++++++++++ .../multi/DefaultMultiQuoteStatusFetcher.kt | 14 -------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/data/common/src/main/kotlin/com/tangem/data/common/quote/DefaultQuotesFetcher.kt b/data/common/src/main/kotlin/com/tangem/data/common/quote/DefaultQuotesFetcher.kt index ca867be571..91f3f11426 100644 --- a/data/common/src/main/kotlin/com/tangem/data/common/quote/DefaultQuotesFetcher.kt +++ b/data/common/src/main/kotlin/com/tangem/data/common/quote/DefaultQuotesFetcher.kt @@ -7,6 +7,7 @@ import arrow.core.raise.catch import arrow.core.raise.ensure import arrow.core.raise.ensureNotNull import com.tangem.data.common.api.safeApiCallWithTimeout +import com.tangem.data.common.quote.DefaultQuotesFetcher.Companion.tenSecInMillis import com.tangem.data.common.quote.QuotesFetcher.Error import com.tangem.data.common.quote.QuotesFetcher.Field import com.tangem.data.common.quote.utils.combine @@ -18,6 +19,7 @@ import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext import org.joda.time.DateTime +import timber.log.Timber import java.util.concurrent.ConcurrentHashMap import kotlin.time.Duration.Companion.seconds @@ -181,11 +183,24 @@ internal class DefaultQuotesFetcher( fields = fields.combine(), ) .bind() + .addSkippedIfHas(currenciesIds) }, onError = { raise(Error.ApiOperationError(it)) }, ) } + private fun QuotesResponse.addSkippedIfHas(ids: Set): QuotesResponse { + val skippedIds = ids.filterNot(quotes.keys::contains).ifEmpty { + return this + } + + Timber.d("Some quotes are missing from the server response: $skippedIds") + + val emptyQuotes = skippedIds.associateWith { QuotesResponse.Quote.EMPTY } + + return copy(quotes = quotes + emptyQuotes) + } + private fun saveQuotes(fiatCurrencyId: String, response: QuotesResponse) { val newQuotes = response.quotes.mapTo(destination = hashSetOf()) { (currencyId, quote) -> QuoteMetadata( diff --git a/data/quotes/src/main/java/com/tangem/data/quotes/multi/DefaultMultiQuoteStatusFetcher.kt b/data/quotes/src/main/java/com/tangem/data/quotes/multi/DefaultMultiQuoteStatusFetcher.kt index 4eac6b1927..618f75178d 100644 --- a/data/quotes/src/main/java/com/tangem/data/quotes/multi/DefaultMultiQuoteStatusFetcher.kt +++ b/data/quotes/src/main/java/com/tangem/data/quotes/multi/DefaultMultiQuoteStatusFetcher.kt @@ -8,7 +8,6 @@ import com.tangem.data.quotes.store.QuotesStatusesStore import com.tangem.data.quotes.store.setSourceAsCache import com.tangem.data.quotes.store.setSourceAsOnlyCache import com.tangem.data.quotes.utils.QuotesUnsupportedCurrenciesIdAdapter -import com.tangem.datasource.api.tangemTech.models.QuotesResponse import com.tangem.datasource.appcurrency.AppCurrencyResponseStore import com.tangem.domain.core.utils.catchOn import com.tangem.domain.models.currency.CryptoCurrency @@ -59,7 +58,6 @@ internal class DefaultMultiQuoteStatusFetcher @Inject constructor( fields = setOf(Field.PRICE, Field.PRICE_CHANGE_24H), ) .getOrElse { error("Cause: $it") } - .addSkippedIfHas(ids = replacementIdsResult.idsForRequest) val updatedResponse = QuotesUnsupportedCurrenciesIdAdapter.getResponseWithUnsupportedCurrencies( response = response, @@ -86,16 +84,4 @@ internal class DefaultMultiQuoteStatusFetcher @Inject constructor( return appCurrencyId } - - private fun QuotesResponse.addSkippedIfHas(ids: Set): QuotesResponse { - val skippedIds = ids.filterNot(quotes.keys::contains).ifEmpty { - return this - } - - Timber.d("Some quotes are missing from the server response: $skippedIds") - - val emptyQuotes = skippedIds.associateWith { QuotesResponse.Quote.EMPTY } - - return copy(quotes = quotes + emptyQuotes) - } } \ No newline at end of file