UNPKG

@daveyplate/better-auth-tanstack

Version:

Tanstack hooks for better-auth

43 lines (35 loc) 1.5 kB
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 type { MultiSessionAuthClient } from "../../types/auth-client" import { useOnMutateError } from "../shared/use-mutate-error" export function useSetActiveSession<TAuthClient extends MultiSessionAuthClient>( authClient: TAuthClient, options?: Partial<AuthQueryOptions> ) { type SetActiveSessionParams = Parameters<TAuthClient["multiSession"]["setActive"]>[0] const queryClient = useQueryClient() const { onMutateError } = useOnMutateError() const context = useContext(AuthQueryContext) const { listDeviceSessionsKey: queryKey } = { ...context, ...options } const mutation = useMutation({ mutationFn: ({ fetchOptions = { throw: true }, ...params }: SetActiveSessionParams) => authClient.multiSession.setActive({ fetchOptions, ...params }), onError: (error) => onMutateError(error, queryKey), onSettled: () => queryClient.clear() }) const { mutate: setActiveSession, mutateAsync: setActiveSessionAsync, isPending: setActiveSessionPending, error: setActiveSessionError } = mutation return { ...mutation, setActiveSession, setActiveSessionAsync, setActiveSessionPending, setActiveSessionError } }