Updated on 2026-08-14

This commit is contained in:
Tangem 2024-08-15 13:22:59 +04:00
parent 337b9908c4
commit 292d895c4a
3 changed files with 15 additions and 7 deletions

View file

@ -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 <T> retryOnError(priority: Boolean = false, call: suspend () -> T): T {
suspend fun <T> retryOnError(priority: Boolean = false, call: suspend () -> T): T {
while (true) {
return try {
call()
@ -16,11 +16,14 @@ internal suspend fun <T> 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
}
}

View file

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

View file

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