refactor: simplify auth and instrument pages
Frontend verify / commits (pull_request) Successful in 24s
Frontend verify / security (pull_request) Failing after 9s
Frontend verify / verify (pull_request) Skipped

This commit is contained in:
2026-09-29 05:45:08 +03:00
parent 32a77860c8
commit b404c1802a
38 changed files with 644 additions and 790 deletions
+16 -40
View File
@@ -1,13 +1,13 @@
import {
apiQueryClient,
type paths,
unwrapResourceResult,
useAuthenticatedQueries,
useResourceQuery,
} from "@/shared/api";
const MIN_STOCK_SEARCH_LENGTH = 2;
type StockDividends = NonNullable<paths["/api/v1/stocks/{uid}/dividends"]["get"]["responses"][200]["content"]["application/json"]["data"]>;
type StockPeriod = NonNullable<
NonNullable<
paths["/api/v1/stocks/{uid}/candles"]["get"]["parameters"]["query"]
@@ -16,35 +16,28 @@ type StockPeriod = NonNullable<
const STOCK_STALE_TIME_MS = 30_000;
function stockQueryOptions(uid: string) {
return {
...apiQueryClient.queryOptions("get", "/api/v1/stocks/{uid}", {
params: { path: { uid } },
}),
staleTime: STOCK_STALE_TIME_MS,
};
}
function useStock(identifier: string) {
const isUid
= /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(
identifier,
);
const byUid = useResourceQuery({
...stockQueryOptions(identifier),
enabled: Boolean(identifier) && isUid,
});
// eslint-disable-next-line unicorn/prefer-minimal-ternary -- Hoisting params breaks the generated union of endpoint request shapes.
const init = isUid
? { params: { path: { uid: identifier } } }
: { params: { path: { ticker: identifier } } };
const byTicker = useResourceQuery({
...apiQueryClient.queryOptions("get", "/api/v1/stocks/by-ticker/{ticker}", {
params: { path: { ticker: identifier } },
}),
enabled: Boolean(identifier) && !isUid,
const options = apiQueryClient.queryOptions(
"get",
isUid ? "/api/v1/stocks/{uid}" : "/api/v1/stocks/by-ticker/{ticker}",
init,
);
return useResourceQuery({
...options,
enabled: Boolean(identifier),
staleTime: STOCK_STALE_TIME_MS,
});
return isUid ? byUid : byTicker;
}
function useStockCandles(uid: string, period: StockPeriod) {
@@ -99,22 +92,6 @@ function useStockQuote(uid: string) {
});
}
function useStocks(uids: string[]) {
const uniqueUids = [...new Set(uids)];
const queries = useAuthenticatedQueries(
uniqueUids.map(uniqueUid => stockQueryOptions(uniqueUid)),
);
return new Map(
queries.map((query, index) => [
// eslint-disable-next-line security/detect-object-injection -- This is a positional index into the local array, not a user-supplied object key.
uniqueUids[index],
unwrapResourceResult(query).data,
]),
);
}
function useStockSearch(query: string) {
return useResourceQuery({
...apiQueryClient.queryOptions("get", "/api/v1/stocks", {
@@ -127,13 +104,12 @@ function useStockSearch(query: string) {
export {
MIN_STOCK_SEARCH_LENGTH,
type StockPeriod,
type StockDividends,
useStock,
useStockCandles,
useStockCompany,
useStockDividends,
useStockPosition,
useStockQuote,
useStocks,
useStockSearch,
};