Updated on 2026-08-14
This commit is contained in:
parent
e9e6b8bcc6
commit
a52c3623bd
6 changed files with 19 additions and 12 deletions
|
|
@ -12,8 +12,7 @@ import kotlinx.serialization.Serializable
|
||||||
data class AvailableToAddData(
|
data class AvailableToAddData(
|
||||||
val availableToAddWallets: Map<UserWalletId, AvailableToAddWallet>,
|
val availableToAddWallets: Map<UserWalletId, AvailableToAddWallet>,
|
||||||
) {
|
) {
|
||||||
val isAvailableToAdd: Boolean
|
val isAvailableToAdd: Boolean = availableToAddWallets.values.any { item -> item.isAvailableToAdd }
|
||||||
get() = availableToAddWallets.isNotEmpty()
|
|
||||||
val isSinglePortfolio: Boolean
|
val isSinglePortfolio: Boolean
|
||||||
get() = availableToAddWallets.size == 1 && availableToAddWallets.values.first().accounts.size == 1
|
get() = availableToAddWallets.size == 1 && availableToAddWallets.values.first().accounts.size == 1
|
||||||
}
|
}
|
||||||
|
|
@ -23,7 +22,9 @@ data class AvailableToAddWallet(
|
||||||
val accounts: List<AccountStatus>,
|
val accounts: List<AccountStatus>,
|
||||||
val availableNetworks: Set<TokenMarketInfo.Network>,
|
val availableNetworks: Set<TokenMarketInfo.Network>,
|
||||||
val availableToAddAccounts: Map<AccountId, AvailableToAddAccount>,
|
val availableToAddAccounts: Map<AccountId, AvailableToAddAccount>,
|
||||||
)
|
) {
|
||||||
|
val isAvailableToAdd: Boolean = availableToAddAccounts.values.any { item -> item.isAvailableToAdd }
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class AvailableToAddAccount(
|
data class AvailableToAddAccount(
|
||||||
|
|
@ -38,6 +39,8 @@ data class AvailableToAddAccount(
|
||||||
.filter { available -> addedNetworks.none { added -> added.backendId == available.networkId } }
|
.filter { available -> addedNetworks.none { added -> added.backendId == available.networkId } }
|
||||||
.toSet()
|
.toSet()
|
||||||
|
|
||||||
|
val isAvailableToAdd: Boolean = availableToAddNetworks.isNotEmpty()
|
||||||
|
|
||||||
val addedMarketNetworks: Set<TokenMarketInfo.Network> = availableNetworks
|
val addedMarketNetworks: Set<TokenMarketInfo.Network> = availableNetworks
|
||||||
.filter { available -> addedNetworks.any { added -> added.backendId == available.networkId } }
|
.filter { available -> addedNetworks.any { added -> added.backendId == available.networkId } }
|
||||||
.toSet()
|
.toSet()
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,6 @@ internal class AvailableToAddDataConverter @Inject constructor(
|
||||||
val availableToAddAccount = accountStatus.getAvailableToAddAccount(wallet) ?: return@mapNotNull null
|
val availableToAddAccount = accountStatus.getAvailableToAddAccount(wallet) ?: return@mapNotNull null
|
||||||
accountStatus.account.accountId to availableToAddAccount
|
accountStatus.account.accountId to availableToAddAccount
|
||||||
}
|
}
|
||||||
.filter { (_, account) -> account.availableToAddNetworks.isNotEmpty() }
|
|
||||||
.toMap()
|
.toMap()
|
||||||
return AvailableToAddWallet(
|
return AvailableToAddWallet(
|
||||||
userWallet = wallet,
|
userWallet = wallet,
|
||||||
|
|
|
||||||
|
|
@ -344,9 +344,10 @@ internal class AddToPortfolioModel @Inject constructor(
|
||||||
portfolioSelectorController.isEnabled.value = isEnabled@{ userWallet, accountStatus ->
|
portfolioSelectorController.isEnabled.value = isEnabled@{ userWallet, accountStatus ->
|
||||||
val availableWallet = state.availableToAddData.availableToAddWallets[userWallet.walletId]
|
val availableWallet = state.availableToAddData.availableToAddWallets[userWallet.walletId]
|
||||||
?: return@isEnabled false
|
?: return@isEnabled false
|
||||||
val availableAccount =
|
val isAvailableAccount =
|
||||||
availableWallet.availableToAddAccounts[accountStatus.account.accountId]
|
availableWallet.availableToAddAccounts[accountStatus.account.accountId]
|
||||||
return@isEnabled availableAccount != null
|
?.isAvailableToAdd == true
|
||||||
|
return@isEnabled isAvailableAccount
|
||||||
}
|
}
|
||||||
AddToPortfolioManager.State.Init,
|
AddToPortfolioManager.State.Init,
|
||||||
AddToPortfolioManager.State.NothingToAdd,
|
AddToPortfolioManager.State.NothingToAdd,
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,7 @@ import kotlinx.serialization.Serializable
|
||||||
internal data class AvailableToAddData(
|
internal data class AvailableToAddData(
|
||||||
val availableToAddWallets: Map<UserWalletId, AvailableToAddWallet>,
|
val availableToAddWallets: Map<UserWalletId, AvailableToAddWallet>,
|
||||||
) {
|
) {
|
||||||
val isAvailableToAdd: Boolean
|
val isAvailableToAdd: Boolean = availableToAddWallets.values.any { item -> item.isAvailableToAdd }
|
||||||
get() = availableToAddWallets.isNotEmpty()
|
|
||||||
val isSinglePortfolio: Boolean
|
val isSinglePortfolio: Boolean
|
||||||
get() = availableToAddWallets.size == 1 && availableToAddWallets.values.first().accounts.size == 1
|
get() = availableToAddWallets.size == 1 && availableToAddWallets.values.first().accounts.size == 1
|
||||||
}
|
}
|
||||||
|
|
@ -23,7 +22,9 @@ internal data class AvailableToAddWallet(
|
||||||
val accounts: List<AccountStatus>,
|
val accounts: List<AccountStatus>,
|
||||||
val availableNetworks: Set<TokenMarketInfo.Network>,
|
val availableNetworks: Set<TokenMarketInfo.Network>,
|
||||||
val availableToAddAccounts: Map<AccountId, AvailableToAddAccount>,
|
val availableToAddAccounts: Map<AccountId, AvailableToAddAccount>,
|
||||||
)
|
) {
|
||||||
|
val isAvailableToAdd: Boolean = availableToAddAccounts.values.any { item -> item.isAvailableToAdd }
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
internal data class AvailableToAddAccount(
|
internal data class AvailableToAddAccount(
|
||||||
|
|
@ -31,6 +32,7 @@ internal data class AvailableToAddAccount(
|
||||||
val availableNetworks: Set<TokenMarketInfo.Network>,
|
val availableNetworks: Set<TokenMarketInfo.Network>,
|
||||||
val addedNetworks: Set<Network>,
|
val addedNetworks: Set<Network>,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
val isSingleNetwork: Boolean
|
val isSingleNetwork: Boolean
|
||||||
get() = availableNetworks.size == 1
|
get() = availableNetworks.size == 1
|
||||||
|
|
||||||
|
|
@ -38,6 +40,8 @@ internal data class AvailableToAddAccount(
|
||||||
.filter { available -> addedNetworks.none { added -> added.backendId == available.networkId } }
|
.filter { available -> addedNetworks.none { added -> added.backendId == available.networkId } }
|
||||||
.toSet()
|
.toSet()
|
||||||
|
|
||||||
|
val isAvailableToAdd: Boolean = availableToAddNetworks.isNotEmpty()
|
||||||
|
|
||||||
val addedMarketNetworks: Set<TokenMarketInfo.Network> = availableNetworks
|
val addedMarketNetworks: Set<TokenMarketInfo.Network> = availableNetworks
|
||||||
.filter { available -> addedNetworks.any { added -> added.backendId == available.networkId } }
|
.filter { available -> addedNetworks.any { added -> added.backendId == available.networkId } }
|
||||||
.toSet()
|
.toSet()
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,6 @@ internal class AvailableToAddDataConverter @Inject constructor(
|
||||||
val availableToAddAccount = accountStatus.getAvailableToAddAccount(wallet) ?: return@mapNotNull null
|
val availableToAddAccount = accountStatus.getAvailableToAddAccount(wallet) ?: return@mapNotNull null
|
||||||
accountStatus.account.accountId to availableToAddAccount
|
accountStatus.account.accountId to availableToAddAccount
|
||||||
}
|
}
|
||||||
.filter { (_, account) -> account.availableToAddNetworks.isNotEmpty() }
|
|
||||||
.toMap()
|
.toMap()
|
||||||
return AvailableToAddWallet(
|
return AvailableToAddWallet(
|
||||||
userWallet = wallet,
|
userWallet = wallet,
|
||||||
|
|
|
||||||
|
|
@ -334,9 +334,10 @@ internal class AddToPortfolioModel @Inject constructor(
|
||||||
portfolioSelectorController.isEnabled.value = isEnabled@{ userWallet, accountStatus ->
|
portfolioSelectorController.isEnabled.value = isEnabled@{ userWallet, accountStatus ->
|
||||||
val availableWallet = state.availableToAddData.availableToAddWallets[userWallet.walletId]
|
val availableWallet = state.availableToAddData.availableToAddWallets[userWallet.walletId]
|
||||||
?: return@isEnabled false
|
?: return@isEnabled false
|
||||||
val availableAccount =
|
val isAvailableAccount =
|
||||||
availableWallet.availableToAddAccounts[accountStatus.account.accountId]
|
availableWallet.availableToAddAccounts[accountStatus.account.accountId]
|
||||||
return@isEnabled availableAccount != null
|
?.isAvailableToAdd == true
|
||||||
|
return@isEnabled isAvailableAccount
|
||||||
}
|
}
|
||||||
AddToPortfolioManager.State.Init,
|
AddToPortfolioManager.State.Init,
|
||||||
AddToPortfolioManager.State.NothingToAdd,
|
AddToPortfolioManager.State.NothingToAdd,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue