Updated on 2026-08-14
This commit is contained in:
parent
e2721b21e1
commit
a67ca6279f
14 changed files with 24 additions and 614 deletions
|
|
@ -1,40 +1,30 @@
|
|||
package com.tangem.domain.nft
|
||||
|
||||
import com.tangem.domain.account.supplier.SingleAccountListSupplier
|
||||
import com.tangem.domain.models.PortfolioId
|
||||
import com.tangem.domain.models.account.Account
|
||||
import com.tangem.domain.models.account.AccountId
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
import com.tangem.domain.nft.models.NFTNetworks
|
||||
import com.tangem.domain.nft.repository.NFTRepository
|
||||
import com.tangem.domain.tokens.repository.CurrenciesRepository
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.mapLatest
|
||||
import kotlinx.coroutines.flow.mapNotNull
|
||||
|
||||
class GetNFTNetworksUseCase(
|
||||
private val currenciesRepository: CurrenciesRepository,
|
||||
private val singleAccountListSupplier: SingleAccountListSupplier,
|
||||
private val nftRepository: NFTRepository,
|
||||
) {
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
operator fun invoke(portfolioId: PortfolioId): Flow<NFTNetworks> = when (portfolioId) {
|
||||
is PortfolioId.Account -> {
|
||||
singleAccountListSupplier(portfolioId.userWalletId)
|
||||
.mapNotNull { accountList ->
|
||||
val account = accountList.accounts.find { it.accountId == portfolioId.accountId }
|
||||
operator fun invoke(accountId: AccountId): Flow<NFTNetworks> {
|
||||
return singleAccountListSupplier(accountId.userWalletId)
|
||||
.mapNotNull { accountList ->
|
||||
val account = accountList.accounts.find { it.accountId == accountId }
|
||||
|
||||
(account as? Account.CryptoPortfolio)?.cryptoCurrencies?.toList()
|
||||
}
|
||||
.mapLatest { it.toNFTNetworks(portfolioId.userWalletId) }
|
||||
}
|
||||
is PortfolioId.Wallet -> {
|
||||
currenciesRepository
|
||||
.getWalletCurrenciesUpdates(portfolioId.userWalletId)
|
||||
.map { cryptoCurrencies -> cryptoCurrencies.toNFTNetworks(portfolioId.userWalletId) }
|
||||
}
|
||||
(account as? Account.CryptoPortfolio)?.cryptoCurrencies?.toList()
|
||||
}
|
||||
.mapLatest { it.toNFTNetworks(accountId.userWalletId) }
|
||||
}
|
||||
|
||||
private suspend fun List<CryptoCurrency>.toNFTNetworks(userWalletId: UserWalletId): NFTNetworks {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue