import { QueryKey, useMutation, UseMutationOptions, useQueryClient, } from "@tanstack/react-query"; type UseCreateMutationConfig = { invalidate?: QueryKey[]; } & UseMutationOptions; export function useCreateMutation( mutationFn: (input: TVariables) => Promise, config?: UseCreateMutationConfig ) { const queryClient = useQueryClient(); return useMutation({ mutationFn, onSuccess: async (data, variables, context) => { if (config?.invalidate) { for (const key of config.invalidate) { await queryClient.invalidateQueries({ queryKey: key }); } } config?.onSuccess?.(data, variables, context); }, onError: (error, variables, context) => { config?.onError?.(error, variables, context); }, ...config, }); }