From b64a43d45548c37ad6f067d3fb23dcf24252fd5a Mon Sep 17 00:00:00 2001 From: Anmol Date: Sat, 6 Sep 2025 20:29:59 +0530 Subject: [PATCH] A Refactor of useContext(AuthQueryContext) --- README.md | 2 +- src/hooks/accounts/use-list-accounts.ts | 5 +- src/hooks/accounts/use-unlink-account.ts | 5 +- src/hooks/api-key/use-create-api-key.ts | 5 +- src/hooks/api-key/use-delete-api-key.ts | 5 +- src/hooks/api-key/use-list-api-keys.ts | 5 +- .../use-list-device-sessions.ts | 5 +- .../use-revoke-device-session.ts | 5 +- .../use-revoke-device-sessions.ts | 5 +- .../device-sessions/use-set-active-session.ts | 5 +- src/hooks/passkey/use-delete-passkey.ts | 5 +- src/hooks/passkey/use-list-passkeys.ts | 5 +- src/hooks/session/use-session.ts | 5 +- src/hooks/session/use-update-user.ts | 5 +- src/hooks/sessions/use-list-sessions.ts | 5 +- .../sessions/use-revoke-other-sessions.ts | 5 +- src/hooks/sessions/use-revoke-session.ts | 6 +- src/hooks/sessions/use-revoke-sessions.ts | 5 +- src/hooks/shared/use-auth-mutation.ts | 5 +- src/hooks/shared/use-auth-query.ts | 5 +- src/hooks/shared/use-mutate-error.ts | 5 +- src/hooks/token/use-token.ts | 6 +- src/lib/auth-query-provider.tsx | 98 ++++++++++--------- src/lib/create-auth-hooks.ts | 5 +- 24 files changed, 99 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index 93ad971..2cf9f64 100644 --- a/README.md +++ b/README.md @@ -515,7 +515,7 @@ export function useUpdateUser( options?: Partial ) { type SessionData = typeof authClient["$Infer"]["Session"] - const { sessionKey: queryKey } = useContext(AuthQueryContext) + const { sessionKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/accounts/use-list-accounts.ts b/src/hooks/accounts/use-list-accounts.ts index 62c51a5..edd59e8 100644 --- a/src/hooks/accounts/use-list-accounts.ts +++ b/src/hooks/accounts/use-list-accounts.ts @@ -1,7 +1,6 @@ import type { AnyUseQueryOptions } from "@tanstack/react-query" -import { useContext } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useAuthQuery } from "../shared/use-auth-query" @@ -9,7 +8,7 @@ export function useListAccounts( authClient: TAuthClient, options?: Partial ) { - const { listAccountsKey: queryKey } = useContext(AuthQueryContext) + const { listAccountsKey: queryKey } = useAuthQueryContext() return useAuthQuery({ authClient, diff --git a/src/hooks/accounts/use-unlink-account.ts b/src/hooks/accounts/use-unlink-account.ts index b1cb3d0..c1655a4 100644 --- a/src/hooks/accounts/use-unlink-account.ts +++ b/src/hooks/accounts/use-unlink-account.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -7,7 +6,7 @@ export function useUnlinkAccount( authClient: TAuthClient, options?: AuthQueryOptions ) { - const { listAccountsKey: queryKey } = useContext(AuthQueryContext) + const { listAccountsKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/api-key/use-create-api-key.ts b/src/hooks/api-key/use-create-api-key.ts index 71cfe43..c1f7c05 100644 --- a/src/hooks/api-key/use-create-api-key.ts +++ b/src/hooks/api-key/use-create-api-key.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -7,7 +6,7 @@ export function useCreateApiKey( authClient: TAuthClient, options?: Partial ) { - const { listApiKeysKey: queryKey } = useContext(AuthQueryContext) + const { listApiKeysKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/api-key/use-delete-api-key.ts b/src/hooks/api-key/use-delete-api-key.ts index 8f17e24..c8d07de 100644 --- a/src/hooks/api-key/use-delete-api-key.ts +++ b/src/hooks/api-key/use-delete-api-key.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -7,7 +6,7 @@ export function useDeleteApiKey( authClient: TAuthClient, options?: Partial ) { - const { listApiKeysKey: queryKey } = useContext(AuthQueryContext) + const { listApiKeysKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/api-key/use-list-api-keys.ts b/src/hooks/api-key/use-list-api-keys.ts index d6a06e2..08bbb1a 100644 --- a/src/hooks/api-key/use-list-api-keys.ts +++ b/src/hooks/api-key/use-list-api-keys.ts @@ -1,7 +1,6 @@ import type { AnyUseQueryOptions } from "@tanstack/react-query" -import { useContext } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useAuthQuery } from "../shared/use-auth-query" @@ -10,7 +9,7 @@ export function useListApiKeys( authClient: TAuthClient, options?: Partial ) { - const { listApiKeysKey: queryKey } = useContext(AuthQueryContext) + const { listApiKeysKey: queryKey } = useAuthQueryContext() return useAuthQuery({ authClient, diff --git a/src/hooks/device-sessions/use-list-device-sessions.ts b/src/hooks/device-sessions/use-list-device-sessions.ts index 1cba598..e3c2548 100644 --- a/src/hooks/device-sessions/use-list-device-sessions.ts +++ b/src/hooks/device-sessions/use-list-device-sessions.ts @@ -1,7 +1,6 @@ import type { AnyUseQueryOptions } from "@tanstack/react-query" -import { useContext } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useAuthQuery } from "../shared/use-auth-query" @@ -10,7 +9,7 @@ export function useListDeviceSessions( authClient: TAuthClient, options?: Partial ) { - const { listDeviceSessionsKey: queryKey } = useContext(AuthQueryContext) + const { listDeviceSessionsKey: queryKey } = useAuthQueryContext() return useAuthQuery({ authClient, diff --git a/src/hooks/device-sessions/use-revoke-device-session.ts b/src/hooks/device-sessions/use-revoke-device-session.ts index 74445a7..de84a1a 100644 --- a/src/hooks/device-sessions/use-revoke-device-session.ts +++ b/src/hooks/device-sessions/use-revoke-device-session.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -7,7 +6,7 @@ export function useRevokeDeviceSession( authClient: TAuthClient, options?: Partial ) { - const { listDeviceSessionsKey: queryKey } = useContext(AuthQueryContext) + const { listDeviceSessionsKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/device-sessions/use-revoke-device-sessions.ts b/src/hooks/device-sessions/use-revoke-device-sessions.ts index bf6c00b..e3e772b 100644 --- a/src/hooks/device-sessions/use-revoke-device-sessions.ts +++ b/src/hooks/device-sessions/use-revoke-device-sessions.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -7,7 +6,7 @@ export function useRevokeDeviceSessions( authClient: TAuthClient, options?: AuthQueryOptions ) { - const { listDeviceSessionsKey: queryKey } = useContext(AuthQueryContext) + const { listDeviceSessionsKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/device-sessions/use-set-active-session.ts b/src/hooks/device-sessions/use-set-active-session.ts index 6494130..4049cb9 100644 --- a/src/hooks/device-sessions/use-set-active-session.ts +++ b/src/hooks/device-sessions/use-set-active-session.ts @@ -1,8 +1,7 @@ import { useMutation } from "@tanstack/react-query" import { useQueryClient } from "@tanstack/react-query" -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useOnMutateError } from "../shared/use-mutate-error" @@ -15,7 +14,7 @@ export function useSetActiveSession( const queryClient = useQueryClient() const { onMutateError } = useOnMutateError() - const context = useContext(AuthQueryContext) + const context = useAuthQueryContext() const { listDeviceSessionsKey: queryKey } = { ...context, ...options } const mutation = useMutation({ diff --git a/src/hooks/passkey/use-delete-passkey.ts b/src/hooks/passkey/use-delete-passkey.ts index f25ef7c..2c7d160 100644 --- a/src/hooks/passkey/use-delete-passkey.ts +++ b/src/hooks/passkey/use-delete-passkey.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -7,7 +6,7 @@ export function useDeletePasskey( authClient: TAuthClient, options?: Partial ) { - const { listPasskeysKey: queryKey } = useContext(AuthQueryContext) + const { listPasskeysKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/passkey/use-list-passkeys.ts b/src/hooks/passkey/use-list-passkeys.ts index dc40bf9..05364ff 100644 --- a/src/hooks/passkey/use-list-passkeys.ts +++ b/src/hooks/passkey/use-list-passkeys.ts @@ -1,7 +1,6 @@ import type { AnyUseQueryOptions } from "@tanstack/react-query" -import { useContext } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import type { AuthClient } from "../../types/auth-client" import { useAuthQuery } from "../shared/use-auth-query" @@ -9,7 +8,7 @@ export function useListPasskeys( authClient: TAuthClient, options?: Partial ) { - const { listPasskeysKey: queryKey } = useContext(AuthQueryContext) + const { listPasskeysKey: queryKey } = useAuthQueryContext() return useAuthQuery({ authClient, diff --git a/src/hooks/session/use-session.ts b/src/hooks/session/use-session.ts index f29c05c..baae6bc 100644 --- a/src/hooks/session/use-session.ts +++ b/src/hooks/session/use-session.ts @@ -1,7 +1,6 @@ import { type AnyUseQueryOptions, useQuery } from "@tanstack/react-query" -import { useContext } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import type { AuthClient } from "../../types/auth-client" @@ -13,7 +12,7 @@ export function useSession( type User = TAuthClient["$Infer"]["Session"]["user"] type Session = TAuthClient["$Infer"]["Session"]["session"] - const { sessionQueryOptions, sessionKey: queryKey, queryOptions } = useContext(AuthQueryContext) + const { sessionQueryOptions, sessionKey: queryKey, queryOptions } = useAuthQueryContext() const mergedOptions = { ...queryOptions, ...sessionQueryOptions, ...options } const result = useQuery({ diff --git a/src/hooks/session/use-update-user.ts b/src/hooks/session/use-update-user.ts index 6fd8136..aaa3cac 100644 --- a/src/hooks/session/use-update-user.ts +++ b/src/hooks/session/use-update-user.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -9,7 +8,7 @@ export function useUpdateUser( ) { type SessionData = TAuthClient["$Infer"]["Session"] - const { sessionKey: queryKey } = useContext(AuthQueryContext) + const { sessionKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/sessions/use-list-sessions.ts b/src/hooks/sessions/use-list-sessions.ts index da223e6..dc6e970 100644 --- a/src/hooks/sessions/use-list-sessions.ts +++ b/src/hooks/sessions/use-list-sessions.ts @@ -1,7 +1,6 @@ import type { AnyUseQueryOptions } from "@tanstack/react-query" -import { useContext } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useAuthQuery } from "../shared/use-auth-query" @@ -9,6 +8,6 @@ export function useListSessions( authClient: TAuthClient, options?: Partial ) { - const { listSessionsKey: queryKey } = useContext(AuthQueryContext) + const { listSessionsKey: queryKey } = useAuthQueryContext() return useAuthQuery({ authClient, queryKey, queryFn: authClient.listSessions, options }) } diff --git a/src/hooks/sessions/use-revoke-other-sessions.ts b/src/hooks/sessions/use-revoke-other-sessions.ts index b116f87..2bebd4c 100644 --- a/src/hooks/sessions/use-revoke-other-sessions.ts +++ b/src/hooks/sessions/use-revoke-other-sessions.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useSession } from "../session/use-session" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -10,7 +9,7 @@ export function useRevokeOtherSessions( ) { type Session = TAuthClient["$Infer"]["Session"]["session"] - const { listSessionsKey: queryKey } = useContext(AuthQueryContext) + const { listSessionsKey: queryKey } = useAuthQueryContext() const { data: sessionData } = useSession(authClient) return useAuthMutation({ diff --git a/src/hooks/sessions/use-revoke-session.ts b/src/hooks/sessions/use-revoke-session.ts index 93a0035..a4c0663 100644 --- a/src/hooks/sessions/use-revoke-session.ts +++ b/src/hooks/sessions/use-revoke-session.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -7,8 +6,7 @@ export function useRevokeSession( authClient: TAuthClient, options?: Partial ) { - type Session = TAuthClient["$Infer"]["Session"]["session"] - const { listSessionsKey: queryKey } = useContext(AuthQueryContext) + const { listSessionsKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/sessions/use-revoke-sessions.ts b/src/hooks/sessions/use-revoke-sessions.ts index dfc347e..23e7811 100644 --- a/src/hooks/sessions/use-revoke-sessions.ts +++ b/src/hooks/sessions/use-revoke-sessions.ts @@ -1,5 +1,4 @@ -import { useContext } from "react" -import { AuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useAuthMutation } from "../shared/use-auth-mutation" @@ -7,7 +6,7 @@ export function useRevokeSessions( authClient: TAuthClient, options?: Partial ) { - const { listSessionsKey: queryKey } = useContext(AuthQueryContext) + const { listSessionsKey: queryKey } = useAuthQueryContext() return useAuthMutation({ queryKey, diff --git a/src/hooks/shared/use-auth-mutation.ts b/src/hooks/shared/use-auth-mutation.ts index dc987a1..8a25ee0 100644 --- a/src/hooks/shared/use-auth-mutation.ts +++ b/src/hooks/shared/use-auth-mutation.ts @@ -1,8 +1,7 @@ import { type QueryKey, useMutation, useQueryClient } from "@tanstack/react-query" import type { BetterFetchOption } from "better-auth/react" -import { useContext } from "react" import type { AuthQueryOptions, NonThrowableResult, ThrowableResult } from "../.." -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import { useOnMutateError } from "./use-mutate-error" type AuthMutationFn = (params: TParams) => Promise @@ -26,7 +25,7 @@ export function useAuthMutation< }) { type TParams = Parameters[0] const queryClient = useQueryClient() - const context = useContext(AuthQueryContext) + const context = useAuthQueryContext() const { optimistic } = { ...context, ...options } const { onMutateError } = useOnMutateError() diff --git a/src/hooks/shared/use-auth-query.ts b/src/hooks/shared/use-auth-query.ts index f595dd9..0b74079 100644 --- a/src/hooks/shared/use-auth-query.ts +++ b/src/hooks/shared/use-auth-query.ts @@ -1,9 +1,8 @@ import { type QueryKey, skipToken } from "@tanstack/query-core" import { type AnyUseQueryOptions, useQuery } from "@tanstack/react-query" import type { BetterFetchOption, BetterFetchResponse } from "better-auth/react" -import { useContext } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useSession } from "../session/use-session" @@ -25,7 +24,7 @@ export function useAuthQuery) { const { data: sessionData } = useSession(authClient) - const { queryOptions } = useContext(AuthQueryContext) + const { queryOptions } = useAuthQueryContext() const mergedOptions = { ...queryOptions, ...options } return useQuery({ diff --git a/src/hooks/shared/use-mutate-error.ts b/src/hooks/shared/use-mutate-error.ts index 561ef1e..5d2ce18 100644 --- a/src/hooks/shared/use-mutate-error.ts +++ b/src/hooks/shared/use-mutate-error.ts @@ -1,10 +1,9 @@ import { type Query, type QueryKey, useQueryClient } from "@tanstack/react-query" -import { useContext } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" export const useOnMutateError = () => { const queryClient = useQueryClient() - const { optimistic } = useContext(AuthQueryContext) + const { optimistic } = useAuthQueryContext() const onMutateError = ( error: Error, diff --git a/src/hooks/token/use-token.ts b/src/hooks/token/use-token.ts index 50c1ec4..1afe711 100644 --- a/src/hooks/token/use-token.ts +++ b/src/hooks/token/use-token.ts @@ -1,7 +1,7 @@ import type { AnyUseQueryOptions } from "@tanstack/react-query" -import { useCallback, useContext, useEffect, useMemo } from "react" +import { useCallback, useEffect, useMemo } from "react" -import { AuthQueryContext } from "../../lib/auth-query-provider" +import { useAuthQueryContext } from "../../lib/auth-query-provider" import type { AnyAuthClient } from "../../types/any-auth-client" import { useSession } from "../session/use-session" @@ -25,7 +25,7 @@ export function useToken( options?: Partial ) { const { data: sessionData } = useSession(authClient, options) - const { tokenKey, tokenQueryOptions, queryOptions } = useContext(AuthQueryContext) + const { tokenKey, tokenQueryOptions, queryOptions } = useAuthQueryContext() const mergedOptions = { ...queryOptions, ...tokenQueryOptions, ...options } const queryResult = useAuthQuery<{ token: string }>({ diff --git a/src/lib/auth-query-provider.tsx b/src/lib/auth-query-provider.tsx index 0b185cc..69aa29f 100644 --- a/src/lib/auth-query-provider.tsx +++ b/src/lib/auth-query-provider.tsx @@ -1,61 +1,69 @@ "use client" import type { AnyUseQueryOptions, QueryKey } from "@tanstack/react-query" -import { type ReactNode, createContext } from "react" +import { type ReactNode, createContext, useContext } from "react" export type AuthQueryOptions = { - queryOptions?: Partial - sessionQueryOptions?: Partial - tokenQueryOptions?: Partial - sessionKey: QueryKey - tokenKey: QueryKey - listAccountsKey: QueryKey - listApiKeysKey: QueryKey - listSessionsKey: QueryKey - listDeviceSessionsKey: QueryKey - listPasskeysKey: QueryKey - optimistic: boolean - refetchOnMutate: boolean + queryOptions?: Partial + sessionQueryOptions?: Partial + tokenQueryOptions?: Partial + sessionKey: QueryKey + tokenKey: QueryKey + listAccountsKey: QueryKey + listApiKeysKey: QueryKey + listSessionsKey: QueryKey + listDeviceSessionsKey: QueryKey + listPasskeysKey: QueryKey + optimistic: boolean + refetchOnMutate: boolean } export const defaultAuthQueryOptions: AuthQueryOptions = { - sessionKey: ["session"], - tokenKey: ["token"], - listAccountsKey: ["list-accounts"], - listApiKeysKey: ["list-api-keys"], - listSessionsKey: ["list-sessions"], - listDeviceSessionsKey: ["list-device-sessions"], - listPasskeysKey: ["list-passkeys"], - optimistic: true, - refetchOnMutate: true + sessionKey: ["session"], + tokenKey: ["token"], + listAccountsKey: ["list-accounts"], + listApiKeysKey: ["list-api-keys"], + listSessionsKey: ["list-sessions"], + listDeviceSessionsKey: ["list-device-sessions"], + listPasskeysKey: ["list-passkeys"], + optimistic: true, + refetchOnMutate: true } export const AuthQueryContext = createContext(defaultAuthQueryOptions) +export const useAuthQueryContext = () => { + const ctx = useContext(AuthQueryContext) + if (ctx === null || ctx === undefined) { + throw new Error('[Better Auth Tanstack] useAuthQueryContext must be used within a AuthQueryProvider.') + } + return ctx +} + export const AuthQueryProvider = ({ - children, - sessionQueryOptions, - tokenQueryOptions, - ...props + children, + sessionQueryOptions, + tokenQueryOptions, + ...props }: { - children: ReactNode + children: ReactNode } & Partial) => { - return ( - - {children} - - ) + return ( + + {children} + + ) } diff --git a/src/lib/create-auth-hooks.ts b/src/lib/create-auth-hooks.ts index 867d972..3c1b323 100644 --- a/src/lib/create-auth-hooks.ts +++ b/src/lib/create-auth-hooks.ts @@ -1,6 +1,5 @@ import type { AnyUseQueryOptions, QueryKey } from "@tanstack/react-query" import { useQueryClient } from "@tanstack/react-query" -import { useContext } from "react" import { useListAccounts } from "../hooks/accounts/use-list-accounts" import { useUnlinkAccount } from "../hooks/accounts/use-unlink-account" @@ -27,7 +26,7 @@ import { type BetterFetchRequest, useAuthQuery } from "../hooks/shared/use-auth- import { useToken } from "../hooks/token/use-token" import type { AnyAuthClient } from "../types/any-auth-client" import type { AuthClient } from "../types/auth-client" -import { AuthQueryContext, type AuthQueryOptions } from "./auth-query-provider" +import { useAuthQueryContext, type AuthQueryOptions } from "./auth-query-provider" import { prefetchSession } from "./prefetch-session" export function createAuthHooks(authClient: TAuthClient) { @@ -35,7 +34,7 @@ export function createAuthHooks(authClient: T useSession: (options?: Partial) => useSession(authClient, options), usePrefetchSession: (options?: Partial) => { const queryClient = useQueryClient() - const queryOptions = useContext(AuthQueryContext) + const queryOptions = useAuthQueryContext() return { prefetch: () => prefetchSession(authClient, queryClient, queryOptions, options)