Files
frontend/src/pages/account/ui/AccountPage.vm.ts
T

35 lines
1.1 KiB
TypeScript

import { useQueryClient } from "@tanstack/react-query";
import { useParams } from "react-router";
import {
type BrokerageAccount,
brokerageAccountsQueryKey,
} from "@/entities/brokerage-account";
import { portfolioErrorCode, usePortfolio } from "@/entities/portfolio";
import { useAuth } from "@/features/auth";
export function useAccountPageViewModel() {
const { accountId } = useParams();
const { accessToken } = useAuth();
const portfolio = usePortfolio(accountId, accessToken);
const account = useQueryClient()
.getQueryData<BrokerageAccount[]>(brokerageAccountsQueryKey)
?.find((item) => item.id === accountId);
if (portfolio.isError)
return {
state: "error" as const,
code: portfolioErrorCode(portfolio.error),
retry: () => portfolio.refetch(),
};
if (portfolio.isFetching || !portfolio.data)
return { state: "loading" as const };
if (!portfolio.data.positions.length && !portfolio.data.cashBalances.length)
return { state: "empty" as const, account, accountId, accessToken };
return {
state: "loaded" as const,
account,
accountId,
accessToken,
portfolio: portfolio.data,
};
}