Updated on 2026-08-14

This commit is contained in:
Tangem 2026-02-02 16:25:50 +07:00
parent e9e6b8bcc6
commit a52c3623bd
6 changed files with 19 additions and 12 deletions

View file

@ -12,8 +12,7 @@ import kotlinx.serialization.Serializable
data class AvailableToAddData(
val availableToAddWallets: Map<UserWalletId, AvailableToAddWallet>,
) {
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<AccountStatus>,
val availableNetworks: Set<TokenMarketInfo.Network>,
val availableToAddAccounts: Map<AccountId, AvailableToAddAccount>,
)
) {
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<TokenMarketInfo.Network> = availableNetworks
.filter { available -> addedNetworks.any { added -> added.backendId == available.networkId } }
.toSet()

View file

@ -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,

View file

@ -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,

View file

@ -12,8 +12,7 @@ import kotlinx.serialization.Serializable
internal data class AvailableToAddData(
val availableToAddWallets: Map<UserWalletId, AvailableToAddWallet>,
) {
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<AccountStatus>,
val availableNetworks: Set<TokenMarketInfo.Network>,
val availableToAddAccounts: Map<AccountId, AvailableToAddAccount>,
)
) {
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<TokenMarketInfo.Network>,
val addedNetworks: Set<Network>,
) {
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<TokenMarketInfo.Network> = availableNetworks
.filter { available -> addedNetworks.any { added -> added.backendId == available.networkId } }
.toSet()

View file

@ -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,

View file

@ -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,