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(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, }; }