import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'; import apiClient from '../../api/client'; import { normalizeApiError, resolveMutationRequest, } from './apiDebug'; export const useCreate = ( resource: string, options?: UseMutationOptions ) => { const queryClient = useQueryClient(); return useMutation({ ...options, mutationFn: async (payload: T) => { const { url, body } = resolveMutationRequest(resource, payload); try { const { data } = await apiClient.post(url, body); return data; } catch (error) { throw normalizeApiError(error); } }, onSuccess: (data, variables, onMutateResult, context) => { const { url } = resolveMutationRequest(resource, variables); queryClient.invalidateQueries({ queryKey: [url] }); if (resource && resource !== url) { queryClient.invalidateQueries({ queryKey: [resource] }); } options?.onSuccess?.(data, variables, onMutateResult, context); }, onError: (error, variables, onMutateResult, context) => { options?.onError?.(error, variables, onMutateResult, context); }, }); };