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 (
0}
/>
{accountQueries.map(({ account, query }) => (
{
void query.refetch();
}}
/>
))}
);
}