Files
frontend/src/entities/income/api/useIncome.ts
T
ksv741 ca0ad4f824
Frontend verify / commits (pull_request) Successful in 28s
Frontend verify / security (pull_request) Successful in 10s
Frontend verify / verify (pull_request) Successful in 8m19s
refactor: enforce frontend view model boundaries
2026-09-28 18:48:23 +03:00

51 lines
1.3 KiB
TypeScript

import { apiQueryClient, type paths, useResourceQuery } from "@/shared/api";
type IncomeAnalytics = NonNullable<
paths["/api/v1/brokerage-accounts/{accountId}/income-analytics"]["get"]["responses"][200]["content"]["application/json"]["data"]
>;
type IncomeSummary = NonNullable<
paths["/api/v1/brokerage-accounts/{accountId}/income-summary"]["get"]["responses"][200]["content"]["application/json"]["data"]
>;
function useIncomeAnalytics(
accountId: string | undefined,
period: { from: string; to: string },
) {
return useResourceQuery({
meta: { accessGroup: "brokerage" },
...apiQueryClient.queryOptions(
"get",
"/api/v1/brokerage-accounts/{accountId}/income-analytics",
{
params: {
path: { accountId: accountId ?? "" },
query: period,
},
},
),
enabled: Boolean(accountId),
staleTime: 30_000,
});
}
function useIncomeSummary(accountId?: string) {
return useResourceQuery({
meta: { accessGroup: "brokerage" },
...apiQueryClient.queryOptions(
"get",
"/api/v1/brokerage-accounts/{accountId}/income-summary",
{ params: { path: { accountId: accountId ?? "" } } },
),
enabled: Boolean(accountId),
staleTime: 30_000,
});
}
export {
type IncomeAnalytics,
type IncomeSummary,
useIncomeAnalytics,
useIncomeSummary,
};