Files
frontend/src/entities/income/api/useIncome.ts
T
codex-bot 43b0f5574a
Frontend verify / commits (push) Skipped
Frontend verify / security (push) Successful in 10s
Frontend verify / verify (push) Successful in 7m18s
feat: unify income payment cards and remove comparisons (WealthLedger/main#33) (#74)
feat: unify income payment cards and remove comparisons (WealthLedger/main#33)
2026-10-13 18:17:35 +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,
};