import { MutationOptions, useMutation, useQueryClient, } from "@tanstack/react-query" import { useAuthApiClient } from "./useAuthApiClient" import { QUERY_KEYS } from "./constants" import type { DeleteSessionResponse } from "../api" export function useSignOut( mutationOptions: Omit< MutationOptions, "mutationFn" | "mutationKey" > = {}, ) { const queryClient = useQueryClient() const authApiClient = useAuthApiClient() const { onSuccess: customOnSuccess, ...restMutationOptions } = mutationOptions const { mutate, mutateAsync, ...rest } = useMutation({ mutationFn: () => authApiClient.deleteSession(), onSuccess: (data, variables, context) => { queryClient.resetQueries({ queryKey: [QUERY_KEYS.SESSION] }) queryClient.resetQueries({ queryKey: [QUERY_KEYS.ACCOUNT, QUERY_KEYS.CURRENT], }) if (customOnSuccess) customOnSuccess(data, variables, context) }, ...restMutationOptions, }) return { signOut: mutate, signOutAsync: mutateAsync, ...rest } }