diff --git a/data/markets/src/main/java/com/tangem/data/markets/utils/RequestUtils.kt b/data/common/src/main/kotlin/com/tangem/data/common/utils/RequestUtils.kt similarity index 77% rename from data/markets/src/main/java/com/tangem/data/markets/utils/RequestUtils.kt rename to data/common/src/main/kotlin/com/tangem/data/common/utils/RequestUtils.kt index 18f4e1fda0..e7f3fbfe45 100644 --- a/data/markets/src/main/java/com/tangem/data/markets/utils/RequestUtils.kt +++ b/data/common/src/main/kotlin/com/tangem/data/common/utils/RequestUtils.kt @@ -1,4 +1,4 @@ -package com.tangem.data.markets.utils +package com.tangem.data.common.utils import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.delay @@ -8,7 +8,7 @@ import timber.log.Timber import kotlin.coroutines.cancellation.CancellationException @Suppress("UnconditionalJumpStatementInLoop") -internal suspend fun retryOnError(priority: Boolean = false, call: suspend () -> T): T { +suspend fun retryOnError(priority: Boolean = false, call: suspend () -> T): T { while (true) { return try { call() @@ -16,11 +16,14 @@ internal suspend fun retryOnError(priority: Boolean = false, call: suspend ( if (e is CancellationException) { currentCoroutineContext().ensureActive() } - Timber.e(e) + + Timber.e(e, "Error occurred during retryOnError block") + if (priority.not()) { yield() delay(timeMillis = 500) } + continue } } diff --git a/data/markets/src/main/java/com/tangem/data/markets/DefaultMarketsTokenRepository.kt b/data/markets/src/main/java/com/tangem/data/markets/DefaultMarketsTokenRepository.kt index e850d1ed35..de9edf3b4b 100644 --- a/data/markets/src/main/java/com/tangem/data/markets/DefaultMarketsTokenRepository.kt +++ b/data/markets/src/main/java/com/tangem/data/markets/DefaultMarketsTokenRepository.kt @@ -1,7 +1,10 @@ package com.tangem.data.markets -import com.tangem.data.markets.converters.* -import com.tangem.data.markets.utils.retryOnError +import com.tangem.data.common.utils.retryOnError +import com.tangem.data.markets.converters.TokenChartConverter +import com.tangem.data.markets.converters.TokenMarketInfoConverter +import com.tangem.data.markets.converters.TokenMarketListConverter +import com.tangem.data.markets.converters.toRequestParam import com.tangem.datasource.api.common.response.getOrThrow import com.tangem.datasource.api.markets.TangemTechMarketsApi import com.tangem.datasource.api.tangemTech.TangemTechApi diff --git a/data/markets/src/main/java/com/tangem/data/markets/MarketsBatchUpdateFetcher.kt b/data/markets/src/main/java/com/tangem/data/markets/MarketsBatchUpdateFetcher.kt index d1db77b24e..3a377ab901 100644 --- a/data/markets/src/main/java/com/tangem/data/markets/MarketsBatchUpdateFetcher.kt +++ b/data/markets/src/main/java/com/tangem/data/markets/MarketsBatchUpdateFetcher.kt @@ -1,9 +1,9 @@ package com.tangem.data.markets +import com.tangem.data.common.utils.retryOnError import com.tangem.data.markets.converters.TokenMarketChartsConverter import com.tangem.data.markets.converters.TokenQuotesShortConverter import com.tangem.data.markets.converters.toRequestParam -import com.tangem.data.markets.utils.retryOnError import com.tangem.datasource.api.common.response.getOrThrow import com.tangem.datasource.api.markets.TangemTechMarketsApi import com.tangem.datasource.api.markets.models.response.TokenMarketChartListResponse @@ -13,7 +13,9 @@ import com.tangem.domain.markets.TokenMarketUpdateRequest import com.tangem.pagination.Batch import com.tangem.pagination.BatchUpdateFetcher import com.tangem.pagination.BatchUpdateResult -import kotlinx.coroutines.* +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.launch internal class MarketsBatchUpdateFetcher( private val marketsApi: TangemTechMarketsApi,