feat(income): add account income analytics

This commit is contained in:
2026-08-28 01:25:52 +03:00
parent 71a214d7ad
commit 9364568202
18 changed files with 1746 additions and 7 deletions
+49
View File
@@ -0,0 +1,49 @@
import { apiQueryClient, useAuthenticatedQuery } from "@/shared/api";
import type { paths } from "@/shared/api/generated/schema";
type IncomeSummary =
paths["/api/v1/brokerage-accounts/{accountId}/income-summary"]["get"]["responses"][200]["content"]["application/json"];
type IncomeAnalytics =
paths["/api/v1/brokerage-accounts/{accountId}/income-analytics"]["get"]["responses"][200]["content"]["application/json"];
function useIncomeSummary(accountId: string | undefined) {
return useAuthenticatedQuery({
...apiQueryClient.queryOptions(
"get",
"/api/v1/brokerage-accounts/{accountId}/income-summary",
{ params: { path: { accountId: accountId ?? "" } } },
),
enabled: Boolean(accountId),
staleTime: 30_000,
retry: false,
});
}
function useIncomeAnalytics(
accountId: string | undefined,
period: { from: string; to: string },
) {
return useAuthenticatedQuery({
...apiQueryClient.queryOptions(
"get",
"/api/v1/brokerage-accounts/{accountId}/income-analytics",
{
params: {
path: { accountId: accountId ?? "" },
query: period,
},
},
),
enabled: Boolean(accountId),
staleTime: 30_000,
retry: false,
refetchOnWindowFocus: false,
});
}
export {
type IncomeAnalytics,
type IncomeSummary,
useIncomeAnalytics,
useIncomeSummary,
};