diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt index fcfa4ecd88..3f623010d5 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt @@ -190,7 +190,8 @@ internal class DefaultCurrenciesRepository( withContext(dispatchers.io) { fetchTokensIfCacheExpired(userWallet, refresh = false) } - }.cancellable() + } + .cancellable() } override suspend fun getMultiCurrencyWalletCurrenciesSync( diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt index bd536ed456..84456d84c7 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt @@ -49,7 +49,8 @@ internal class DefaultNetworksRepository( withContext(dispatchers.io) { fetchNetworksStatusesIfCacheExpired(userWalletId, networks, false) } - }.cancellable() + } + .cancellable() override suspend fun fetchNetworkPendingTransactions(userWalletId: UserWalletId, networks: Set) { withContext(dispatchers.io) { diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultQuotesRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultQuotesRepository.kt index e557875dc8..4584643457 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultQuotesRepository.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultQuotesRepository.kt @@ -10,8 +10,8 @@ import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.tokens.model.Quote import com.tangem.domain.tokens.repository.QuotesRepository import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.* -import kotlinx.coroutines.launch import kotlinx.coroutines.withContext internal class DefaultQuotesRepository( @@ -27,21 +27,18 @@ internal class DefaultQuotesRepository( @Volatile private var quotesFetchedForAppCurrency: String? = null - override fun getQuotesUpdates(currenciesIds: Set): Flow> = channelFlow { - launch(dispatchers.io) { - quotesStore.get(currenciesIds) - .map(quotesConverter::convertSet) - .collectLatest(::send) - } + @OptIn(ExperimentalCoroutinesApi::class) + override fun getQuotesUpdates(currenciesIds: Set): Flow> { + return selectedAppCurrencyStore.get() + .distinctUntilChanged() + .flatMapLatest { appCurrency -> + fetchExpiredQuotes(currenciesIds, appCurrency.id, refresh = false) - withContext(dispatchers.io) { - selectedAppCurrencyStore.get() - .distinctUntilChanged() - .collectLatest { appCurrency -> - fetchExpiredQuotes(currenciesIds, appCurrency.id, refresh = false) - } - } - }.cancellable() + quotesStore.get(currenciesIds).map(quotesConverter::convertSet) + } + .cancellable() + .flowOn(dispatchers.io) + } override suspend fun getQuotesSync(currenciesIds: Set, refresh: Boolean): Set { return withContext(dispatchers.io) {