Files
frontend/src/shared/api/authenticated-query.ts
T
codex-bot 5077bd4f0b
Frontend verify / commits (push) Skipped
Frontend verify / security (push) Successful in 11s
Frontend verify / verify (push) Failing after 7m35s
refactor: drop dead query helpers and simplify read deadline (WealthLedger/frontend#141) (#149)
2026-11-04 18:50:27 +03:00

42 lines
965 B
TypeScript

import {
type QueryKey,
useQuery,
type UseQueryOptions,
type UseQueryResult,
} from "@tanstack/react-query";
import { useSyncExternalStore } from "react";
import {
getAuthenticatedSessionSnapshot,
subscribeAuthenticatedSession,
} from "./client";
function useAuthenticatedQuery<
TQueryFunctionData = unknown,
TError = Error,
TData = TQueryFunctionData,
TQueryKey extends QueryKey = QueryKey,
>(
options: UseQueryOptions<TQueryFunctionData, TError, TData, TQueryKey>,
): UseQueryResult<TData, TError> {
const hasSession = useHasAuthenticatedSession();
const enabled = options.enabled;
return useQuery({
...options,
enabled: query =>
hasSession
&& (typeof enabled === "function" ? enabled(query) : (enabled ?? true)),
});
}
function useHasAuthenticatedSession() {
return useSyncExternalStore(
subscribeAuthenticatedSession,
getAuthenticatedSessionSnapshot,
getAuthenticatedSessionSnapshot,
);
}
export { useAuthenticatedQuery };