UNPKG

@refinedev/core

Version:

Refine is a React meta-framework for building enterprise-level, data-intensive applications rapidly with support for modern UI libraries and headless integrations.

47 lines (39 loc) 1.39 kB
import { getXRay } from "@refinedev/devtools-internal"; import { type UseQueryOptions, type UseQueryResult, useQuery, } from "@tanstack/react-query"; import { useAuthProviderContext } from "@contexts/auth"; import { useKeys } from "@hooks"; import type { CheckResponse } from "../../../contexts/auth/types"; export type UseIsAuthenticatedProps = { // Make queryKey and queryFn optional queryOptions?: Omit<UseQueryOptions<CheckResponse>, "queryKey" | "queryFn">; params?: any; }; export type UseIsAuthenticatedReturnType = UseQueryResult<CheckResponse, any>; /** * `useIsAuthenticated` calls `check` method from {@link https://refine.dev/docs/authentication/auth-provider/#check `authProvider`} under the hood. * * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useIsAuthenticated} for more details. * */ export function useIsAuthenticated({ queryOptions, params, }: UseIsAuthenticatedProps = {}): UseIsAuthenticatedReturnType { const { check } = useAuthProviderContext(); const { keys } = useKeys(); const queryResponse = useQuery<CheckResponse>({ queryKey: keys().auth().action("check").get(), queryFn: async () => (await check?.(params)) ?? { authenticated: true }, retry: false, ...queryOptions, meta: { ...queryOptions?.meta, ...getXRay("useIsAuthenticated"), }, }); return queryResponse; }