Updated on 2026-08-14
This commit is contained in:
parent
3b6629f7f4
commit
152602e829
3 changed files with 43 additions and 23 deletions
|
|
@ -373,6 +373,7 @@ internal object TokensDomainModule {
|
|||
singleNetworkStatusSupplier: SingleNetworkStatusSupplier,
|
||||
multiNetworkStatusSupplier: MultiNetworkStatusSupplier,
|
||||
multiNetworkStatusFetcher: MultiNetworkStatusFetcher,
|
||||
singleNetworkStatusFetcher: SingleNetworkStatusFetcher,
|
||||
multiQuoteFetcher: MultiQuoteFetcher,
|
||||
singleQuoteSupplier: SingleQuoteSupplier,
|
||||
singleYieldBalanceSupplier: SingleYieldBalanceSupplier,
|
||||
|
|
@ -385,6 +386,7 @@ internal object TokensDomainModule {
|
|||
singleNetworkStatusSupplier = singleNetworkStatusSupplier,
|
||||
multiNetworkStatusSupplier = multiNetworkStatusSupplier,
|
||||
multiNetworkStatusFetcher = multiNetworkStatusFetcher,
|
||||
singleNetworkStatusFetcher = singleNetworkStatusFetcher,
|
||||
multiQuoteFetcher = multiQuoteFetcher,
|
||||
singleQuoteSupplier = singleQuoteSupplier,
|
||||
singleYieldBalanceSupplier = singleYieldBalanceSupplier,
|
||||
|
|
@ -403,6 +405,7 @@ internal object TokensDomainModule {
|
|||
singleNetworkStatusSupplier: SingleNetworkStatusSupplier,
|
||||
multiNetworkStatusSupplier: MultiNetworkStatusSupplier,
|
||||
multiNetworkStatusFetcher: MultiNetworkStatusFetcher,
|
||||
singleNetworkStatusFetcher: SingleNetworkStatusFetcher,
|
||||
multiQuoteFetcher: MultiQuoteFetcher,
|
||||
singleQuoteSupplier: SingleQuoteSupplier,
|
||||
singleYieldBalanceSupplier: SingleYieldBalanceSupplier,
|
||||
|
|
@ -415,6 +418,7 @@ internal object TokensDomainModule {
|
|||
singleNetworkStatusSupplier = singleNetworkStatusSupplier,
|
||||
multiNetworkStatusSupplier = multiNetworkStatusSupplier,
|
||||
multiNetworkStatusFetcher = multiNetworkStatusFetcher,
|
||||
singleNetworkStatusFetcher = singleNetworkStatusFetcher,
|
||||
multiQuoteFetcher = multiQuoteFetcher,
|
||||
singleQuoteSupplier = singleQuoteSupplier,
|
||||
singleYieldBalanceSupplier = singleYieldBalanceSupplier,
|
||||
|
|
|
|||
|
|
@ -51,7 +51,18 @@ class FetchCurrencyStatusUseCase(
|
|||
return either {
|
||||
val currency = getCurrency(userWalletId, id)
|
||||
|
||||
fetchCurrencyStatus(userWalletId, currency, refresh)
|
||||
coroutineScope {
|
||||
val fetchStatus = async {
|
||||
fetchNetworkStatus(userWalletId, currency.network)
|
||||
}
|
||||
val fetchQuote = async {
|
||||
fetchQuote(currency.id)
|
||||
}
|
||||
val fetchStakingBalance = async {
|
||||
fetchStakingBalance(userWalletId, currency, refresh)
|
||||
}
|
||||
awaitAll(fetchStatus, fetchQuote, fetchStakingBalance)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -69,28 +80,18 @@ class FetchCurrencyStatusUseCase(
|
|||
return either {
|
||||
val currency = getPrimaryCurrency(userWalletId, refresh)
|
||||
|
||||
fetchCurrencyStatus(userWalletId, currency, refresh)
|
||||
coroutineScope {
|
||||
val fetchStatus = async {
|
||||
fetchNetworkStatus(userWalletId, currency.network)
|
||||
}
|
||||
val fetchQuote = async {
|
||||
fetchQuote(currency.id)
|
||||
}
|
||||
awaitAll(fetchStatus, fetchQuote)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun Raise<CurrencyStatusError>.fetchCurrencyStatus(
|
||||
userWalletId: UserWalletId,
|
||||
currency: CryptoCurrency,
|
||||
refresh: Boolean,
|
||||
) = coroutineScope {
|
||||
val fetchStatus = async {
|
||||
fetchNetworkStatus(userWalletId, currency.network)
|
||||
}
|
||||
val fetchQuote = async {
|
||||
fetchQuote(currency.id)
|
||||
}
|
||||
val fetchStakingBalance = async {
|
||||
fetchStakingBalance(userWalletId, currency, refresh)
|
||||
}
|
||||
|
||||
awaitAll(fetchStatus, fetchQuote, fetchStakingBalance)
|
||||
}
|
||||
|
||||
private suspend fun Raise<CurrencyStatusError>.getCurrency(
|
||||
userWalletId: UserWalletId,
|
||||
id: CryptoCurrency.ID,
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import com.tangem.domain.models.network.Network
|
|||
import com.tangem.domain.models.network.NetworkStatus
|
||||
import com.tangem.domain.networks.multi.MultiNetworkStatusFetcher
|
||||
import com.tangem.domain.networks.multi.MultiNetworkStatusSupplier
|
||||
import com.tangem.domain.networks.single.SingleNetworkStatusFetcher
|
||||
import com.tangem.domain.networks.single.SingleNetworkStatusProducer
|
||||
import com.tangem.domain.networks.single.SingleNetworkStatusSupplier
|
||||
import com.tangem.domain.quotes.QuotesRepositoryV2
|
||||
|
|
@ -36,6 +37,7 @@ import com.tangem.domain.tokens.repository.CurrenciesRepository
|
|||
import com.tangem.domain.tokens.utils.extractAddress
|
||||
import com.tangem.domain.wallets.models.UserWalletId
|
||||
import com.tangem.utils.extensions.addOrReplace
|
||||
import com.tangem.utils.extensions.isSingleItem
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.*
|
||||
|
||||
|
|
@ -47,6 +49,7 @@ class CachedCurrenciesStatusesOperations(
|
|||
private val singleNetworkStatusSupplier: SingleNetworkStatusSupplier,
|
||||
multiNetworkStatusSupplier: MultiNetworkStatusSupplier,
|
||||
private val multiNetworkStatusFetcher: MultiNetworkStatusFetcher,
|
||||
private val singleNetworkStatusFetcher: SingleNetworkStatusFetcher,
|
||||
private val multiQuoteFetcher: MultiQuoteFetcher,
|
||||
private val singleQuoteSupplier: SingleQuoteSupplier,
|
||||
private val singleYieldBalanceSupplier: SingleYieldBalanceSupplier,
|
||||
|
|
@ -181,9 +184,21 @@ class CachedCurrenciesStatusesOperations(
|
|||
coroutineScope {
|
||||
awaitAll(
|
||||
async {
|
||||
multiNetworkStatusFetcher(
|
||||
params = MultiNetworkStatusFetcher.Params(userWalletId = userWalletId, networks = networks),
|
||||
)
|
||||
if (networks.isSingleItem()) {
|
||||
singleNetworkStatusFetcher(
|
||||
params = SingleNetworkStatusFetcher.Params(
|
||||
userWalletId = userWalletId,
|
||||
network = networks.first(),
|
||||
),
|
||||
)
|
||||
} else {
|
||||
multiNetworkStatusFetcher(
|
||||
params = MultiNetworkStatusFetcher.Params(
|
||||
userWalletId = userWalletId,
|
||||
networks = networks,
|
||||
),
|
||||
)
|
||||
}
|
||||
},
|
||||
async {
|
||||
val rawCurrenciesIds = currenciesIds.mapNotNullTo(mutableSetOf()) { it.rawCurrencyId }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue