diff --git a/domain/account/src/main/java/com/tangem/domain/account/models/AccountList.kt b/domain/account/src/main/java/com/tangem/domain/account/models/AccountList.kt index ab66eca0fd..f4ecc26395 100644 --- a/domain/account/src/main/java/com/tangem/domain/account/models/AccountList.kt +++ b/domain/account/src/main/java/com/tangem/domain/account/models/AccountList.kt @@ -102,7 +102,7 @@ data class AccountList private constructor( return accounts.flatMap { account -> when (account) { is Account.CryptoPortfolio -> account.cryptoCurrencies - is Account.Payment -> TODO("[REDACTED_JIRA]") + is Account.Payment -> emptyList() } } } diff --git a/domain/account/status/src/main/java/com/tangem/domain/account/status/producer/DefaultSingleAccountStatusListProducer.kt b/domain/account/status/src/main/java/com/tangem/domain/account/status/producer/DefaultSingleAccountStatusListProducer.kt index 1c341528d0..a2bf732b26 100644 --- a/domain/account/status/src/main/java/com/tangem/domain/account/status/producer/DefaultSingleAccountStatusListProducer.kt +++ b/domain/account/status/src/main/java/com/tangem/domain/account/status/producer/DefaultSingleAccountStatusListProducer.kt @@ -363,7 +363,7 @@ internal class DefaultSingleAccountStatusListProducer @AssistedInject constructo private fun createLoadingAccountStatusList(accountList: AccountList): AccountStatusList { return AccountStatusList( userWalletId = accountList.userWalletId, - accountStatuses = accountList.accounts.map { account -> + accountStatuses = accountList.accounts.mapNotNull { account -> when (account) { is Account.CryptoPortfolio -> { val currencyStatuses = account.cryptoCurrencies.map { @@ -380,7 +380,7 @@ internal class DefaultSingleAccountStatusListProducer @AssistedInject constructo priceChangeLce = lceLoading(), ) } - is Account.Payment -> TODO("[REDACTED_JIRA]") + is Account.Payment -> null } }, totalAccounts = accountList.totalAccounts, diff --git a/domain/nft/models/src/main/kotlin/com/tangem/domain/nft/models/WalletNFTCollections.kt b/domain/nft/models/src/main/kotlin/com/tangem/domain/nft/models/WalletNFTCollections.kt index f6526e3509..726fb69b1b 100644 --- a/domain/nft/models/src/main/kotlin/com/tangem/domain/nft/models/WalletNFTCollections.kt +++ b/domain/nft/models/src/main/kotlin/com/tangem/domain/nft/models/WalletNFTCollections.kt @@ -3,7 +3,7 @@ package com.tangem.domain.nft.models import com.tangem.domain.models.account.Account data class WalletNFTCollections( - val collections: Map>, + val collections: Map>, ) { val flattenCollections by lazy { collections.values.flatten() } } \ No newline at end of file diff --git a/domain/nft/src/main/kotlin/com/tangem/domain/nft/GetNFTCollectionsUseCase.kt b/domain/nft/src/main/kotlin/com/tangem/domain/nft/GetNFTCollectionsUseCase.kt index f8432faa75..90a58d011c 100644 --- a/domain/nft/src/main/kotlin/com/tangem/domain/nft/GetNFTCollectionsUseCase.kt +++ b/domain/nft/src/main/kotlin/com/tangem/domain/nft/GetNFTCollectionsUseCase.kt @@ -18,14 +18,18 @@ class GetNFTCollectionsUseCase( @OptIn(ExperimentalCoroutinesApi::class) operator fun invoke(userWalletId: UserWalletId): Flow { return singleAccountListSupplier(userWalletId) - .mapLatest { statusList -> statusList.accounts.mapNotNull(::flowOfNFTCollections) } + .mapLatest { statusList -> + statusList.accounts.filterIsInstance().mapNotNull(::flowOfNFTCollections) + } .flatMapLatest { flows -> combine(flows) { WalletNFTCollections(it.toMap()) } } } - private fun flowOfNFTCollections(account: Account): Flow>>? { - val currencies = (account as? Account.CryptoPortfolio)?.cryptoCurrencies.orEmpty() + private fun flowOfNFTCollections( + account: Account.CryptoPortfolio, + ): Flow>>? { + val currencies = account.cryptoCurrencies if (currencies.isEmpty()) return null diff --git a/features/account/impl/src/main/java/com/tangem/features/account/createedit/AccountCreateEditModel.kt b/features/account/impl/src/main/java/com/tangem/features/account/createedit/AccountCreateEditModel.kt index 50a4eaf8b6..d47f9fd8d3 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/createedit/AccountCreateEditModel.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/createedit/AccountCreateEditModel.kt @@ -33,7 +33,6 @@ import com.tangem.features.account.analytics.AccountSettingsAnalyticEvents.Compa import com.tangem.features.account.analytics.WalletSettingsAccountAnalyticEvents import com.tangem.features.account.createedit.entity.AccountCreateEditUM import com.tangem.features.account.createedit.entity.AccountCreateEditUMBuilder -import com.tangem.features.account.createedit.entity.AccountCreateEditUMBuilder.Companion.portfolioIcon import com.tangem.features.account.createedit.entity.AccountCreateEditUMBuilder.Companion.toggleProgress import com.tangem.features.account.createedit.entity.AccountCreateEditUMBuilder.Companion.updateButton import com.tangem.features.account.createedit.entity.AccountCreateEditUMBuilder.Companion.updateColorSelect @@ -173,7 +172,7 @@ internal class AccountCreateEditModel @Inject constructor( val name = state.account.name.toDomain().getOrNull() ?: return val icon = CryptoPortfolioIconConverter.convertBack(state.account.portfolioIcon) val isNewName = name != params.account.accountName - val isNewIcon = icon != params.account.portfolioIcon + val isNewIcon = icon != params.account.icon val derivationIndex = params.account.derivationIndex.value analyticsEventHandler.send(AccountSettingsAnalyticEvents.ButtonSave(name, icon, derivationIndex)) @@ -258,7 +257,7 @@ internal class AccountCreateEditModel @Inject constructor( is AccountCreateEditComponent.Params.Create -> isValidName is AccountCreateEditComponent.Params.Edit -> { val oldName = params.account.accountName.toUM() - val oldIcon = CryptoPortfolioIconConverter.convert(params.account.portfolioIcon) + val oldIcon = CryptoPortfolioIconConverter.convert(params.account.icon) val isNewName = this.account.name.trim() != oldName val isNewIcon = this.account.portfolioIcon != oldIcon diff --git a/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUMBuilder.kt b/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUMBuilder.kt index b98da2e8b9..23eb2bd18c 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUMBuilder.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUMBuilder.kt @@ -7,7 +7,6 @@ import com.tangem.core.res.R import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.extensions.wrappedList -import com.tangem.domain.models.account.Account import com.tangem.domain.models.account.CryptoPortfolioIcon import com.tangem.features.account.AccountCreateEditComponent import kotlinx.collections.immutable.toImmutableList @@ -37,10 +36,8 @@ internal class AccountCreateEditUMBuilder( ) is AccountCreateEditComponent.Params.Edit -> AccountCreateEditUM.Account( name = params.account.accountName.toUM(), - portfolioIcon = CryptoPortfolioIconConverter.convert(params.account.portfolioIcon), - derivationInfo = createAccountDerivationInfo( - index = (params.account as Account.CryptoPortfolio).derivationIndex.value, - ), + portfolioIcon = CryptoPortfolioIconConverter.convert(params.account.icon), + derivationInfo = createAccountDerivationInfo(index = params.account.derivationIndex.value), inputPlaceholder = resourceReference(R.string.account_form_placeholder_edit_account), onNameChange = onNameChange, ) @@ -50,7 +47,7 @@ internal class AccountCreateEditUMBuilder( fun initColorsUM(onColorSelect: (CryptoPortfolioIcon.Color) -> Unit): AccountCreateEditUM.Colors { val selected: CryptoPortfolioIcon.Color = when (params) { is AccountCreateEditComponent.Params.Create -> createIcon.color - is AccountCreateEditComponent.Params.Edit -> params.account.portfolioIcon.color + is AccountCreateEditComponent.Params.Edit -> params.account.icon.color } return AccountCreateEditUM.Colors( selected = selected, @@ -62,7 +59,7 @@ internal class AccountCreateEditUMBuilder( fun initIconsUM(onIconSelect: (CryptoPortfolioIcon.Icon) -> Unit): AccountCreateEditUM.Icons { val selected: CryptoPortfolioIcon.Icon = when (params) { is AccountCreateEditComponent.Params.Create -> createIcon.value - is AccountCreateEditComponent.Params.Edit -> params.account.portfolioIcon.value + is AccountCreateEditComponent.Params.Edit -> params.account.icon.value } return AccountCreateEditUM.Icons( selected = selected, @@ -85,13 +82,6 @@ internal class AccountCreateEditUMBuilder( } internal companion object { - - val Account.portfolioIcon: CryptoPortfolioIcon - get() = when (this) { - is Account.CryptoPortfolio -> this.icon - is Account.Payment -> TODO("[REDACTED_JIRA]") - } - fun AccountCreateEditUM.updateColorSelect(color: CryptoPortfolioIcon.Color): AccountCreateEditUM { val newIcon = this.account.portfolioIcon.copy( color = color, diff --git a/features/account/impl/src/main/java/com/tangem/features/account/details/AccountDetailsModel.kt b/features/account/impl/src/main/java/com/tangem/features/account/details/AccountDetailsModel.kt index d9b4788e38..f21cbe265f 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/details/AccountDetailsModel.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/details/AccountDetailsModel.kt @@ -21,7 +21,6 @@ import com.tangem.domain.models.wallet.isMultiCurrency import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.features.account.AccountDetailsComponent import com.tangem.features.account.analytics.AccountSettingsAnalyticEvents -import com.tangem.features.account.createedit.entity.AccountCreateEditUMBuilder.Companion.portfolioIcon import com.tangem.features.account.details.entity.AccountDetailsUM import com.tangem.features.account.details.entity.AccountDetailsUM.ArchiveMode import com.tangem.utils.coroutines.CoroutineDispatcherProvider @@ -164,7 +163,7 @@ internal class AccountDetailsModel @Inject constructor( ?.isMultiCurrency == true return AccountDetailsUM( accountName = account.accountName.toUM().value, - accountIcon = CryptoPortfolioIconConverter.convert(account.portfolioIcon), + accountIcon = CryptoPortfolioIconConverter.convert(account.icon), onCloseClick = { router.pop() }, onAccountEditClick = { onEditAccountClick(account) }, onManageTokensClick = { onManageTokensClick(account) }, diff --git a/features/feed/api/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/AvailableToAddData.kt b/features/feed/api/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/AvailableToAddData.kt index b868b9b8be..4b491c0356 100644 --- a/features/feed/api/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/AvailableToAddData.kt +++ b/features/feed/api/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/AvailableToAddData.kt @@ -28,7 +28,7 @@ data class AvailableToAddWallet( @Serializable data class AvailableToAddAccount( - val account: AccountStatus, + val account: AccountStatus.CryptoPortfolio, val availableNetworks: Set, val addedNetworks: Set, ) { diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddToPortfolioModel.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddToPortfolioModel.kt index ce12bfc05a..711c38b1f3 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddToPortfolioModel.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddToPortfolioModel.kt @@ -14,7 +14,6 @@ import com.tangem.core.ui.message.ToastMessage import com.tangem.domain.account.status.usecase.GetCryptoCurrencyActionsUseCaseV2 import com.tangem.domain.markets.GetTokenMarketCryptoCurrency import com.tangem.domain.markets.TokenMarketInfo -import com.tangem.domain.models.account.AccountStatus import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.currency.CryptoCurrencyStatus import com.tangem.domain.models.wallet.UserWallet @@ -28,13 +27,13 @@ import com.tangem.features.feed.components.market.details.portfolio.impl.loader. import com.tangem.features.feed.components.market.details.portfolio.impl.model.PortfolioTokenUMConverter.Companion.toQuickActions import com.tangem.features.feed.impl.R import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import com.tangem.utils.logging.TangemLogger import kotlinx.coroutines.Job import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch -import com.tangem.utils.logging.TangemLogger import javax.inject.Inject private const val TOKEN_ACTIONS_DELAY = 500L @@ -325,10 +324,7 @@ internal class AddToPortfolioModel @Inject constructor( network: TokenMarketInfo.Network, account: AvailableToAddAccount, ): CryptoCurrency? { - val accountIndex = when (val accountStatus = account.account) { - is AccountStatus.CryptoPortfolio -> accountStatus.account.derivationIndex - is AccountStatus.Payment -> TODO("[REDACTED_JIRA]") - } + val accountIndex = account.account.account.derivationIndex return getTokenMarketCryptoCurrency( userWalletId = userWallet.walletId, tokenMarketParams = addToPortfolioManager.token, diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddTokenModel.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddTokenModel.kt index 17d27f1aad..2fb83f4031 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddTokenModel.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddTokenModel.kt @@ -11,7 +11,6 @@ import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.message.ToastMessage import com.tangem.domain.account.status.usecase.GetAccountCurrencyStatusUseCase import com.tangem.domain.account.status.usecase.ManageCryptoCurrenciesUseCase -import com.tangem.domain.models.account.Account import com.tangem.domain.wallets.usecase.ColdWalletAndHasMissedDerivationsUseCase import com.tangem.features.feed.components.market.details.portfolio.add.SelectedNetwork import com.tangem.features.feed.components.market.details.portfolio.add.SelectedPortfolio @@ -105,11 +104,8 @@ internal class AddTokenModel @Inject constructor( if (status == null) { processError(error = null) } else { - when (account) { - is Account.CryptoPortfolio -> if (!account.isMainAccount) { - analyticsEventHandler.send(analyticsEventBuilder.addToNotMainAccount()) - } - is Account.Payment -> TODO("[REDACTED_JIRA]") + if (!account.isMainAccount) { + analyticsEventHandler.send(analyticsEventBuilder.addToNotMainAccount()) } analyticsEventHandler.send( diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/impl/model/MarketsPortfolioDelegate.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/impl/model/MarketsPortfolioDelegate.kt index e1ed13a89e..f10bf94e1f 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/impl/model/MarketsPortfolioDelegate.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/impl/model/MarketsPortfolioDelegate.kt @@ -275,15 +275,12 @@ internal class MarketsPortfolioDelegate @AssistedInject constructor( ) } - private fun Account.toAccountPortfolioHeader(): PortfolioHeader = PortfolioHeader( + private fun Account.CryptoPortfolio.toAccountPortfolioHeader(): PortfolioHeader = PortfolioHeader( id = this.accountId.value, state = AccountTitleUM.Account( prefixText = TextReference.EMPTY, name = this.accountName.toUM().value, - icon = when (this) { - is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(this.icon) - is Account.Payment -> TODO("[REDACTED_JIRA]") - }, + icon = CryptoPortfolioIconConverter.convert(this.icon), ), ) @@ -334,7 +331,7 @@ private data class Portfolio( private data class AccountWithAdded( val addedCurrency: List, - val accountStatus: AccountStatus, + val accountStatus: AccountStatus.CryptoPortfolio, ) private data class SettingsBox( diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenSelectorModel.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenSelectorModel.kt index 731f1757df..d0c6b34ea4 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenSelectorModel.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenSelectorModel.kt @@ -17,8 +17,8 @@ import com.tangem.core.ui.message.EventMessageAction import com.tangem.core.ui.message.SnackbarMessage import com.tangem.domain.account.status.supplier.SingleAccountStatusListSupplier import com.tangem.domain.managetokens.GetSupportedNetworksUseCase -import com.tangem.domain.models.account.Account import com.tangem.domain.models.account.AccountStatus +import com.tangem.domain.models.account.filterCryptoPortfolio import com.tangem.domain.models.network.Network import com.tangem.features.managetokens.component.AddCustomTokenMode import com.tangem.features.managetokens.component.CustomTokenSelectorComponent @@ -214,23 +214,14 @@ internal class CustomTokenSelectorModel @Inject constructor( this.account.derivationIndex.value.toLong() == accountNode val accounts = singleAccountStatusListSupplier(mode.userWalletId) - .first().accountStatuses + .first().accountStatuses.filterCryptoPortfolio() - val accountStatus = accounts.find { account -> - when (account) { - is AccountStatus.CryptoPortfolio -> account.sameNodeAndNotMain() - is AccountStatus.Payment -> TODO("[REDACTED_JIRA]") - } - } - - accountStatus?.account + accounts + .find { account -> account.sameNodeAndNotMain() } + ?.account } - val accountName = when (account) { - is Account.CryptoPortfolio -> account.accountName - is Account.Payment -> TODO("[REDACTED_JIRA]") - null -> null - } + val accountName = account?.accountName if (accountName == null) { onDerivationPathSelected(derivationPath, null) diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/collections/entity/transformer/UpdateDataStateTransformer.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/collections/entity/transformer/UpdateDataStateTransformer.kt index 6a2f95803d..80e74ee49c 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/collections/entity/transformer/UpdateDataStateTransformer.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/collections/entity/transformer/UpdateDataStateTransformer.kt @@ -95,15 +95,12 @@ internal class UpdateDataStateTransformer( createNFTsUM(mainAccountCollection).toPersistentList() } - private fun Account.toAccountPortfolioUM(): NFTCollectionPortfolioUM = NFTCollectionPortfolioUM( + private fun Account.CryptoPortfolio.toAccountPortfolioUM(): NFTCollectionPortfolioUM = NFTCollectionPortfolioUM( id = this.accountId.value, title = AccountTitleUM.Account( prefixText = TextReference.EMPTY, name = this.accountName.toUM().value, - icon = when (this) { - is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(this.icon) - is Account.Payment -> TODO("[REDACTED_JIRA]") - }, + icon = CryptoPortfolioIconConverter.convert(this.icon), ), ) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/hottokens/model/HotCryptoPortfolioDataLoader.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/hottokens/model/HotCryptoPortfolioDataLoader.kt index d49f018ad2..a317ada8d2 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/hottokens/model/HotCryptoPortfolioDataLoader.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/hottokens/model/HotCryptoPortfolioDataLoader.kt @@ -8,6 +8,7 @@ import com.tangem.domain.account.status.usecase.GetAccountCurrencyStatusUseCase import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase import com.tangem.domain.appcurrency.model.AppCurrency import com.tangem.domain.models.account.AccountStatus +import com.tangem.domain.models.account.filterCryptoPortfolio import com.tangem.domain.models.currency.CryptoCurrencyStatus import com.tangem.domain.models.wallet.UserWallet import com.tangem.domain.models.wallet.UserWalletId @@ -42,14 +43,10 @@ internal class HotCryptoPortfolioDataLoader @Inject constructor( .invokeSync(userWalletId, hotCryptoCurrencies) .getOrNull() .orEmpty() - val accountsWithHotCrypto = walletAccounts.accountStatuses.map { accountStatus -> - val account: AccountStatus.CryptoPortfolio = when (accountStatus) { - is AccountStatus.CryptoPortfolio -> accountStatus - is AccountStatus.Payment -> TODO("[REDACTED_JIRA]") - } - val addedHotCrypto = mapOfAddedCurrencies[account.account].orEmpty() + val accountsWithHotCrypto = walletAccounts.accountStatuses.filterCryptoPortfolio().map { accountStatus -> + val addedHotCrypto = mapOfAddedCurrencies[accountStatus.account].orEmpty() HotCryptoPortfolioData.Account( - account = account, + account = accountStatus, addedHotCrypto = addedHotCrypto, ) } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/availablepairs/model/AvailableSwapPairsModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/availablepairs/model/AvailableSwapPairsModel.kt index f3b60a2dcd..23a6df2272 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/availablepairs/model/AvailableSwapPairsModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/availablepairs/model/AvailableSwapPairsModel.kt @@ -247,20 +247,16 @@ internal class AvailableSwapPairsModel @Inject constructor( val (appCurrency, isBalanceHidden) = appCurrencyAndBalanceHiding val filterByQueryAccountList: Map> = accountList + .filterCryptoPortfolio() .associate { accountStatus -> - when (accountStatus) { - is AccountStatus.CryptoPortfolio -> { - val statuses = accountStatus.tokenList.flattenCurrencies() - .filterNot { status -> - status.currency.network.backendId == selectedStatus?.currency?.network?.backendId && - status.currency.id.contractAddress == selectedStatus.currency.id.contractAddress - } - .filterByQuery(query = query) - - accountStatus.account to statuses + val statuses = accountStatus.tokenList.flattenCurrencies() + .filterNot { status -> + status.currency.network.backendId == selectedStatus?.currency?.network?.backendId && + status.currency.id.contractAddress == selectedStatus.currency.id.contractAddress } - is AccountStatus.Payment -> TODO("[REDACTED_JIRA]") - } + .filterByQuery(query = query) + + accountStatus.account to statuses } .filterValues { it.isNotEmpty() } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/entity/transformer/SetLoadingAccountTokenListTransformer.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/entity/transformer/SetLoadingAccountTokenListTransformer.kt index a7ca52c790..797dfec9df 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/entity/transformer/SetLoadingAccountTokenListTransformer.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/entity/transformer/SetLoadingAccountTokenListTransformer.kt @@ -21,12 +21,9 @@ internal class SetLoadingAccountTokenListTransformer( private val accountListItemConverter = LoadingAccountTokenItemConverter(appCurrency) override fun transform(prevState: TokenListUM): TokenListUM { - val totalTokensCount = accountList.sumOf { account -> - when (account) { - is AccountStatus.CryptoPortfolio -> account.tokenList.flattenCurrencies().size - is AccountStatus.Payment -> TODO("[REDACTED_JIRA]") - } - } + val totalTokensCount = accountList + .filterCryptoPortfolio() + .sumOf { account -> account.tokenList.flattenCurrencies().size } return prevState.copy( availableItems = persistentListOf(), @@ -40,13 +37,10 @@ internal class SetLoadingAccountTokenListTransformer( ) } else { TokenListUMData.TokenList( - tokensList = accountList.flatMap { account -> - when (account) { - is AccountStatus.CryptoPortfolio -> LoadingTokenListItemConverter.convertList( - account.tokenList.flattenCurrencies().map(CryptoCurrencyStatus::currency), - ) - is AccountStatus.Payment -> TODO("[REDACTED_JIRA]") - } + tokensList = accountList.filterCryptoPortfolio().flatMap { account -> + LoadingTokenListItemConverter.convertList( + account.tokenList.flattenCurrencies().map(CryptoCurrencyStatus::currency), + ) }.toPersistentList(), totalTokensCount = totalTokensCount, ) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/model/OnrampTokenListModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/model/OnrampTokenListModel.kt index 5b62caa0f6..0b7676b1e6 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/model/OnrampTokenListModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/model/OnrampTokenListModel.kt @@ -18,7 +18,6 @@ import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase import com.tangem.domain.exchange.RampStateManager import com.tangem.domain.models.TotalFiatBalance import com.tangem.domain.models.account.Account -import com.tangem.domain.models.account.AccountStatus import com.tangem.domain.models.account.filterCryptoPortfolio import com.tangem.domain.models.currency.CryptoCurrencyStatus import com.tangem.domain.settings.usercountry.GetUserCountryUseCase @@ -240,13 +239,8 @@ internal class OnrampTokenListModel @Inject constructor( ): Map> = accountStatuses.asSequence() .filterCryptoPortfolio() .associate { accountStatus -> - when (accountStatus) { - is AccountStatus.CryptoPortfolio -> { - val filteredList = accountStatus.tokenList.flattenCurrencies().filterByQuery(query = query) - accountStatus.account to filteredList - } - is AccountStatus.Payment -> TODO("[REDACTED_JIRA]") - } + val filteredList = accountStatus.tokenList.flattenCurrencies().filterByQuery(query = query) + accountStatus.account to filteredList }.filter { (_, value) -> value.isNotEmpty() } private fun List.filterByQuery(query: String): List { diff --git a/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/ReferralInteractorImpl.kt b/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/ReferralInteractorImpl.kt index 3dac39dddb..b3d7fdc50a 100644 --- a/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/ReferralInteractorImpl.kt +++ b/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/ReferralInteractorImpl.kt @@ -4,9 +4,9 @@ import com.tangem.common.core.TangemSdkError import com.tangem.domain.account.producer.SingleAccountProducer import com.tangem.domain.account.status.usecase.ManageCryptoCurrenciesUseCase import com.tangem.domain.account.supplier.SingleAccountSupplier -import com.tangem.domain.models.account.Account import com.tangem.domain.models.account.AccountId import com.tangem.domain.models.account.DerivationIndex +import com.tangem.domain.models.account.derivationIndex import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.walletmanager.WalletManagersFacade @@ -40,20 +40,13 @@ internal class ReferralInteractorImpl( val account = singleAccountSupplier.getSyncOrNull( params = SingleAccountProducer.Params(accountId = accountId), - ) - ?: error("Account not found: $accountId") - - val accountIndex = when (account) { - is Account.CryptoPortfolio -> account.derivationIndex - is Account.Payment -> TODO("[REDACTED_JIRA]") - } + ) ?: error("Account not found: $accountId") val cryptoCurrency = getCryptoCurrency( userWalletId = accountId.userWalletId, tokenData = tokenData, - accountIndex = accountIndex, - ) - ?: error("Failed to create crypto currency") + accountIndex = account.derivationIndex, + ) ?: error("Failed to create crypto currency") manageCryptoCurrenciesUseCase( accountId = accountId, diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt index 952916beb1..dbbaa31b93 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt @@ -30,7 +30,6 @@ import com.tangem.domain.demo.IsDemoCardUseCase import com.tangem.domain.exchange.RampStateManager import com.tangem.domain.express.models.ExpressOperationType import com.tangem.domain.models.account.Account -import com.tangem.domain.models.account.AccountStatus import com.tangem.domain.models.account.filterCryptoPortfolio import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.currency.CryptoCurrencyStatus @@ -72,11 +71,7 @@ import com.tangem.utils.logging.TangemLogger import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.async -import kotlinx.coroutines.awaitAll -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.supervisorScope +import kotlinx.coroutines.* import java.math.BigDecimal import java.math.BigInteger import java.math.RoundingMode @@ -142,10 +137,7 @@ internal class SwapInteractorImpl @AssistedInject constructor( val walletAccountCurrencyStatusesExceptInitial: Map> = walletAccountCurrencyStatuses.mapNotNull { accountStatus -> - val filteredCurrencies = when (accountStatus) { - is AccountStatus.CryptoPortfolio -> accountStatus.flattenCurrencies().filterCurrencies(currency) - is AccountStatus.Payment -> TODO("[REDACTED_JIRA]") - } + val filteredCurrencies = accountStatus.flattenCurrencies().filterCurrencies(currency) if (filteredCurrencies.isNotEmpty()) { accountStatus.account to filteredCurrencies