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 9d221287dd..b868b9b8be 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 @@ -12,8 +12,7 @@ import kotlinx.serialization.Serializable data class AvailableToAddData( val availableToAddWallets: Map, ) { - val isAvailableToAdd: Boolean - get() = availableToAddWallets.isNotEmpty() + val isAvailableToAdd: Boolean = availableToAddWallets.values.any { item -> item.isAvailableToAdd } val isSinglePortfolio: Boolean get() = availableToAddWallets.size == 1 && availableToAddWallets.values.first().accounts.size == 1 } @@ -23,7 +22,9 @@ data class AvailableToAddWallet( val accounts: List, val availableNetworks: Set, val availableToAddAccounts: Map, -) +) { + val isAvailableToAdd: Boolean = availableToAddAccounts.values.any { item -> item.isAvailableToAdd } +} @Serializable data class AvailableToAddAccount( @@ -38,6 +39,8 @@ data class AvailableToAddAccount( .filter { available -> addedNetworks.none { added -> added.backendId == available.networkId } } .toSet() + val isAvailableToAdd: Boolean = availableToAddNetworks.isNotEmpty() + val addedMarketNetworks: Set = availableNetworks .filter { available -> addedNetworks.any { added -> added.backendId == available.networkId } } .toSet() diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/converter/AvailableToAddDataConverter.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/converter/AvailableToAddDataConverter.kt index 49d3820aa2..a6b02044fb 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/converter/AvailableToAddDataConverter.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/converter/AvailableToAddDataConverter.kt @@ -70,7 +70,6 @@ internal class AvailableToAddDataConverter @Inject constructor( val availableToAddAccount = accountStatus.getAvailableToAddAccount(wallet) ?: return@mapNotNull null accountStatus.account.accountId to availableToAddAccount } - .filter { (_, account) -> account.availableToAddNetworks.isNotEmpty() } .toMap() return AvailableToAddWallet( userWallet = wallet, 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 72b3e4b07b..299f1d72ed 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 @@ -344,9 +344,10 @@ internal class AddToPortfolioModel @Inject constructor( portfolioSelectorController.isEnabled.value = isEnabled@{ userWallet, accountStatus -> val availableWallet = state.availableToAddData.availableToAddWallets[userWallet.walletId] ?: return@isEnabled false - val availableAccount = + val isAvailableAccount = availableWallet.availableToAddAccounts[accountStatus.account.accountId] - return@isEnabled availableAccount != null + ?.isAvailableToAdd == true + return@isEnabled isAvailableAccount } AddToPortfolioManager.State.Init, AddToPortfolioManager.State.NothingToAdd, diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/api/AvailableToAddData.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/api/AvailableToAddData.kt index 3ca633edf5..976ad0a6c4 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/api/AvailableToAddData.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/api/AvailableToAddData.kt @@ -12,8 +12,7 @@ import kotlinx.serialization.Serializable internal data class AvailableToAddData( val availableToAddWallets: Map, ) { - val isAvailableToAdd: Boolean - get() = availableToAddWallets.isNotEmpty() + val isAvailableToAdd: Boolean = availableToAddWallets.values.any { item -> item.isAvailableToAdd } val isSinglePortfolio: Boolean get() = availableToAddWallets.size == 1 && availableToAddWallets.values.first().accounts.size == 1 } @@ -23,7 +22,9 @@ internal data class AvailableToAddWallet( val accounts: List, val availableNetworks: Set, val availableToAddAccounts: Map, -) +) { + val isAvailableToAdd: Boolean = availableToAddAccounts.values.any { item -> item.isAvailableToAdd } +} @Serializable internal data class AvailableToAddAccount( @@ -31,6 +32,7 @@ internal data class AvailableToAddAccount( val availableNetworks: Set, val addedNetworks: Set, ) { + val isSingleNetwork: Boolean get() = availableNetworks.size == 1 @@ -38,6 +40,8 @@ internal data class AvailableToAddAccount( .filter { available -> addedNetworks.none { added -> added.backendId == available.networkId } } .toSet() + val isAvailableToAdd: Boolean = availableToAddNetworks.isNotEmpty() + val addedMarketNetworks: Set = availableNetworks .filter { available -> addedNetworks.any { added -> added.backendId == available.networkId } } .toSet() diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/converter/AvailableToAddDataConverter.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/converter/AvailableToAddDataConverter.kt index a9a11d6eb7..3a311b6854 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/converter/AvailableToAddDataConverter.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/converter/AvailableToAddDataConverter.kt @@ -70,7 +70,6 @@ internal class AvailableToAddDataConverter @Inject constructor( val availableToAddAccount = accountStatus.getAvailableToAddAccount(wallet) ?: return@mapNotNull null accountStatus.account.accountId to availableToAddAccount } - .filter { (_, account) -> account.availableToAddNetworks.isNotEmpty() } .toMap() return AvailableToAddWallet( userWallet = wallet, diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/model/AddToPortfolioModel.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/model/AddToPortfolioModel.kt index b0198b5975..6b0fd6a169 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/model/AddToPortfolioModel.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/model/AddToPortfolioModel.kt @@ -334,9 +334,10 @@ internal class AddToPortfolioModel @Inject constructor( portfolioSelectorController.isEnabled.value = isEnabled@{ userWallet, accountStatus -> val availableWallet = state.availableToAddData.availableToAddWallets[userWallet.walletId] ?: return@isEnabled false - val availableAccount = + val isAvailableAccount = availableWallet.availableToAddAccounts[accountStatus.account.accountId] - return@isEnabled availableAccount != null + ?.isAvailableToAdd == true + return@isEnabled isAvailableAccount } AddToPortfolioManager.State.Init, AddToPortfolioManager.State.NothingToAdd,