import { aggregateBrokerAccounts, useBrokerAccounts, useBrokerAccountPortfolios, } from '@/entities/broker-account'; import { BrokerAccountCard } from '@/widgets/broker-account-card'; import { BrokerAccountsSummary } from '@/widgets/broker-accounts-summary'; function BrokerAccountsPageSkeleton() { return (

T-Bank broker overview

Брокерские счета

{['1', '2', '3'].map((id) => ( undefined} /> ))}
); } export function BrokerAccountsPage() { const { data: accounts, isLoading, error } = useBrokerAccounts(); const safeAccounts = accounts ?? []; const accountQueries = useBrokerAccountPortfolios(safeAccounts); if (isLoading) { return ; } if (error) { return

Не удалось загрузить счета

; } if (safeAccounts.length === 0) { return (

T-Bank broker overview

Брокерские счета

Пока нет подключённых счетов

После подключения T-Bank здесь появятся брокерские счета и ИИС со сводкой по капиталу.

); } const successfulPortfolios = accountQueries .map(({ query }) => query.data) .filter((portfolio): portfolio is NonNullable => Boolean(portfolio)); const loadingCount = accountQueries.filter( ({ query }) => (query.isLoading || query.isPending || query.isFetching) && !query.data, ).length; const availableCount = successfulPortfolios.length; const aggregate = aggregateBrokerAccounts(successfulPortfolios); return (

T-Bank broker overview

Брокерские счета

{safeAccounts.length} счетов под наблюдением

0} />
{accountQueries.map(({ account, query }) => ( { void query.refetch(); }} /> ))}
); }