Updated on 2026-08-14

This commit is contained in:
Tangem 2025-11-06 16:17:28 +07:00
parent d624a7552a
commit 0edc7eb8a8
5 changed files with 21 additions and 12 deletions

View file

@ -21,12 +21,17 @@ interface PortfolioFetcher {
data class Data(
val appCurrency: AppCurrency,
val isBalanceHidden: Boolean,
val balances: Map<UserWallet, PortfolioBalance>,
val balances: Map<UserWalletId, PortfolioBalance>,
) {
val isSingleChoice: Boolean = balances.values
.map { it.accountsBalance.accountStatuses }
.flatten().size == 1
fun isSingleChoice(walletId: UserWalletId): Boolean = balances[walletId]
?.accountsBalance
?.accountStatuses
?.size == 1
}
data class PortfolioBalance(

View file

@ -6,6 +6,7 @@ import com.tangem.domain.account.status.supplier.SingleAccountStatusListSupplier
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.models.wallet.isMultiCurrency
import com.tangem.domain.wallets.usecase.GetWalletsUseCase
import com.tangem.features.account.PortfolioFetcher
@ -76,13 +77,13 @@ internal class DefaultPortfolioFetcher @AssistedInject constructor(
}
}
private fun balancesForWallets(wallets: List<UserWallet>): Flow<Map<UserWallet, PortfolioBalance>> {
private fun balancesForWallets(wallets: List<UserWallet>): Flow<Map<UserWalletId, PortfolioBalance>> {
val balanceFlows = wallets.map { walletAccountsBalancesFlow(it) }
return combine(balanceFlows) { pairs -> pairs.toMap() }
}
private fun walletAccountsBalancesFlow(wallet: UserWallet): Flow<Pair<UserWallet, PortfolioBalance>> =
accountStatusListFlow(wallet).map { wallet to PortfolioBalance(wallet, it) }
private fun walletAccountsBalancesFlow(wallet: UserWallet): Flow<Pair<UserWalletId, PortfolioBalance>> =
accountStatusListFlow(wallet).map { wallet.walletId to PortfolioBalance(wallet, it) }
private fun accountStatusListFlow(wallet: UserWallet): Flow<AccountStatusList> =
singleAccountStatusListSupplier(SingleAccountStatusListProducer.Params(wallet.walletId))

View file

@ -44,7 +44,7 @@ internal class DefaultPortfolioSelectorController @Inject constructor(
data.balances.forEach { wallet, balance ->
val accountStatuses = balance.accountsBalance.accountStatuses
.find { accountId == it.account.accountId }
if (accountStatuses != null) result = wallet to accountStatuses
if (accountStatuses != null) result = balance.userWallet to accountStatuses
}
return@combine result

View file

@ -88,8 +88,9 @@ internal class PortfolioSelectorModel @Inject constructor(
val appCurrency = portfolioData.appCurrency
val isBalanceHidden = portfolioData.isBalanceHidden
val lockedWallets = mutableListOf<PortfolioSelectorItemUM>()
portfolioData.balances.forEach { wallet, portfolio ->
portfolioData.balances.forEach { walletId, portfolio ->
val balance = portfolio.walletBalance
val wallet = portfolio.userWallet
val walletItemUM = UserWalletItemUMConverter(
onClick = {
selectorController.selectAccount(portfolio.accountsBalance.mainAccount.account.accountId)
@ -130,8 +131,9 @@ internal class PortfolioSelectorModel @Inject constructor(
val appCurrency = portfolioData.appCurrency
val isBalanceHidden = portfolioData.isBalanceHidden
val lockedWallets = mutableListOf<PortfolioSelectorItemUM>()
portfolioData.balances.forEach { wallet, portfolio ->
portfolioData.balances.forEach { walletId, portfolio ->
val balance = portfolio.walletBalance
val wallet = portfolio.userWallet
val walletItemUM = UserWalletItemUMConverter(
onClick = {
selectorController.selectAccount(portfolio.accountsBalance.mainAccount.account.accountId)