Updated on 2026-08-14
This commit is contained in:
parent
86cc752581
commit
3e8d721915
1 changed files with 25 additions and 28 deletions
|
|
@ -10,11 +10,6 @@ import com.tangem.data.common.currency.getNetwork
|
||||||
import com.tangem.data.common.utils.retryOnError
|
import com.tangem.data.common.utils.retryOnError
|
||||||
import com.tangem.data.markets.analytics.MarketsDataAnalyticsEvent
|
import com.tangem.data.markets.analytics.MarketsDataAnalyticsEvent
|
||||||
import com.tangem.data.markets.converters.*
|
import com.tangem.data.markets.converters.*
|
||||||
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.TokenQuotesShortConverter
|
|
||||||
import com.tangem.data.markets.converters.toRequestParam
|
|
||||||
import com.tangem.datasource.api.common.response.ApiResponseError
|
import com.tangem.datasource.api.common.response.ApiResponseError
|
||||||
import com.tangem.datasource.api.common.response.getOrThrow
|
import com.tangem.datasource.api.common.response.getOrThrow
|
||||||
import com.tangem.datasource.api.markets.TangemTechMarketsApi
|
import com.tangem.datasource.api.markets.TangemTechMarketsApi
|
||||||
|
|
@ -29,6 +24,7 @@ import com.tangem.domain.wallets.models.UserWalletId
|
||||||
import com.tangem.pagination.*
|
import com.tangem.pagination.*
|
||||||
import com.tangem.pagination.fetcher.LimitOffsetBatchFetcher
|
import com.tangem.pagination.fetcher.LimitOffsetBatchFetcher
|
||||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
import java.util.concurrent.atomic.AtomicInteger
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
import java.util.concurrent.atomic.AtomicLong
|
import java.util.concurrent.atomic.AtomicLong
|
||||||
|
|
||||||
|
|
@ -125,7 +121,7 @@ internal class DefaultMarketsTokenRepository(
|
||||||
interval: PriceChangeInterval,
|
interval: PriceChangeInterval,
|
||||||
tokenId: String,
|
tokenId: String,
|
||||||
tokenSymbol: String,
|
tokenSymbol: String,
|
||||||
): TokenChart {
|
) = withContext(dispatcherProvider.io) {
|
||||||
val mappedTokenId = getTokenIdIfL2Network(tokenId)
|
val mappedTokenId = getTokenIdIfL2Network(tokenId)
|
||||||
val response = marketsApi.getCoinChart(
|
val response = marketsApi.getCoinChart(
|
||||||
currency = fiatCurrencyCode,
|
currency = fiatCurrencyCode,
|
||||||
|
|
@ -142,7 +138,7 @@ internal class DefaultMarketsTokenRepository(
|
||||||
response.getOrThrow()
|
response.getOrThrow()
|
||||||
}
|
}
|
||||||
|
|
||||||
return TokenChartConverter.convert(
|
return@withContext TokenChartConverter.convert(
|
||||||
interval = interval,
|
interval = interval,
|
||||||
value = result,
|
value = result,
|
||||||
|
|
||||||
|
|
@ -162,7 +158,7 @@ internal class DefaultMarketsTokenRepository(
|
||||||
interval: PriceChangeInterval,
|
interval: PriceChangeInterval,
|
||||||
tokenId: String,
|
tokenId: String,
|
||||||
tokenSymbol: String,
|
tokenSymbol: String,
|
||||||
): TokenChart {
|
) = withContext(dispatcherProvider.io) {
|
||||||
val mappedTokenId = getTokenIdIfL2Network(tokenId)
|
val mappedTokenId = getTokenIdIfL2Network(tokenId)
|
||||||
val response = marketsApi.getCoinsListCharts(
|
val response = marketsApi.getCoinsListCharts(
|
||||||
coinIds = mappedTokenId,
|
coinIds = mappedTokenId,
|
||||||
|
|
@ -176,7 +172,7 @@ internal class DefaultMarketsTokenRepository(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return TokenChartConverter.convert(
|
return@withContext TokenChartConverter.convert(
|
||||||
interval = interval,
|
interval = interval,
|
||||||
value = chart,
|
value = chart,
|
||||||
|
|
||||||
|
|
@ -196,7 +192,7 @@ internal class DefaultMarketsTokenRepository(
|
||||||
tokenId: String,
|
tokenId: String,
|
||||||
tokenSymbol: String,
|
tokenSymbol: String,
|
||||||
languageCode: String,
|
languageCode: String,
|
||||||
): TokenMarketInfo {
|
) = withContext(dispatcherProvider.io) {
|
||||||
val response = marketsApi.getCoinMarketData(
|
val response = marketsApi.getCoinMarketData(
|
||||||
currency = fiatCurrencyCode,
|
currency = fiatCurrencyCode,
|
||||||
coinId = tokenId,
|
coinId = tokenId,
|
||||||
|
|
@ -213,29 +209,30 @@ internal class DefaultMarketsTokenRepository(
|
||||||
}
|
}
|
||||||
|
|
||||||
val resultResponse = result.applyL2Compatibility(tokenId)
|
val resultResponse = result.applyL2Compatibility(tokenId)
|
||||||
return TokenMarketInfoConverter.convert(resultResponse)
|
return@withContext TokenMarketInfoConverter.convert(resultResponse)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getTokenQuotes(fiatCurrencyCode: String, tokenId: String, tokenSymbol: String): TokenQuotes {
|
override suspend fun getTokenQuotes(fiatCurrencyCode: String, tokenId: String, tokenSymbol: String) =
|
||||||
// for second markets iteration we should use extended api method with all required fields
|
withContext(dispatcherProvider.io) {
|
||||||
val response = tangemTechApi.getQuotes(
|
// for second markets iteration we should use extended api method with all required fields
|
||||||
currencyId = fiatCurrencyCode,
|
val response = tangemTechApi.getQuotes(
|
||||||
coinIds = tokenId,
|
currencyId = fiatCurrencyCode,
|
||||||
fields = marketsQuoteFields.joinToString(separator = ","),
|
coinIds = tokenId,
|
||||||
)
|
fields = marketsQuoteFields.joinToString(separator = ","),
|
||||||
|
)
|
||||||
|
|
||||||
val result = catchApiErrorAndSendEvent(
|
val result = catchApiErrorAndSendEvent(
|
||||||
errorEvent = MarketsDataAnalyticsEvent.Details.Error(
|
errorEvent = MarketsDataAnalyticsEvent.Details.Error(
|
||||||
request = MarketsDataAnalyticsEvent.Details.Error.Request.Info,
|
request = MarketsDataAnalyticsEvent.Details.Error.Request.Info,
|
||||||
tokenSymbol = tokenSymbol,
|
tokenSymbol = tokenSymbol,
|
||||||
),
|
),
|
||||||
) {
|
) {
|
||||||
response.getOrThrow()
|
response.getOrThrow()
|
||||||
|
}
|
||||||
|
|
||||||
|
return@withContext TokenQuotesShortConverter.convert(tokenId, result).toFull()
|
||||||
}
|
}
|
||||||
|
|
||||||
return TokenQuotesShortConverter.convert(tokenId, result).toFull()
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun createCryptoCurrency(
|
override suspend fun createCryptoCurrency(
|
||||||
userWalletId: UserWalletId,
|
userWalletId: UserWalletId,
|
||||||
token: TokenMarketParams,
|
token: TokenMarketParams,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue