diff --git a/src/features/b2b/api/b2bApi.ts b/src/features/b2b/api/b2bApi.ts index 7a4d1cb..11dfafe 100644 --- a/src/features/b2b/api/b2bApi.ts +++ b/src/features/b2b/api/b2bApi.ts @@ -95,8 +95,9 @@ export interface OrgAmountRaw { raw: string formatted: string decimals: number - usd_price: string - usd_value: string + // null when pricing is unavailable (e.g. an upstream provider error). + usd_price: string | null + usd_value: string | null } export interface OrgWalletBalance { @@ -107,13 +108,14 @@ export interface OrgWalletBalance { native_symbol: string native: OrgAmountRaw tokens: Record - total_usd: string + // null when the wallet's balance could not be fetched (see `error`). + total_usd: string | null error: string | null } export interface OrgBalancesResponse { items: OrgWalletBalance[] - total_usd: string + total_usd: string | null has_errors: boolean } diff --git a/src/widgets/token-table/model/useChainTokenRows.ts b/src/widgets/token-table/model/useChainTokenRows.ts index 46daba0..b1231a0 100644 --- a/src/widgets/token-table/model/useChainTokenRows.ts +++ b/src/widgets/token-table/model/useChainTokenRows.ts @@ -1,5 +1,6 @@ import { useWalletBalance, usePortfolio, CHAINS } from '@features/wallet' import type { Chain, FormattedAmount } from '@features/wallet' +import { useMe } from '@features/auth' import { getCoinIcon } from '@shared/assets/coins' import { truncateDecimals } from '@shared/lib/utils/truncateDecimals' import { TOKENS, type Token } from './tokens' @@ -95,6 +96,13 @@ export function useChainTokenRows(chain: Chain) { export function useAllWalletTokenRows() { const { data, isLoading } = usePortfolio() + const { data: me } = useMe() + + // Legal-entity portfolios return a fixed catalog of supported tokens that are + // usually all zero for a fresh account. Filtering out zero balances would + // leave this aggregate view blank, so show every wallet/token (matching the + // per-chain pages). Individuals keep the non-zero-only view to avoid clutter. + const showAll = me?.account_type === 'legal_entity' if (!data) return { rows: [] as Token[], isLoading } @@ -106,12 +114,12 @@ export function useAllWalletTokenRows() { const chainRows: Token[] = [] - if (chainData.native && hasBalance(chainData.native)) { + if (chainData.native && (showAll || hasBalance(chainData.native))) { chainRows.push(nativeRowFor(chain, chainData.native)) } for (const [symbol, amount] of Object.entries(chainData.tokens ?? {})) { - if (!hasBalance(amount)) continue + if (!showAll && !hasBalance(amount)) continue chainRows.push(tokenRowFor(chain, symbol, amount)) }