UNPKG

vormiaqueryjs

Version:

Vormia Query Js - A npm package for query management with VormiaPHP laravel Backend application

68 lines (67 loc) 1.73 kB
import { useQueryClient, useMutation } from "@tanstack/react-query"; import { getGlobalVormiaClient } from "../client/createVormiaClient.mjs"; const useVrmMutation = (options) => { const queryClient = useQueryClient(); const client = getGlobalVormiaClient(); const { endpoint, method = "POST", headers, transform, encryptData = false, onSuccess, onError, ...mutationOptions } = options; const mutation = useMutation({ mutationFn: async (variables) => { try { const config = { method, url: endpoint, data: variables, headers: { "Content-Type": "application/json", ...headers }, encryptData }; const response = await client.request(config); if (transform && typeof transform === "function") { return { ...response, data: transform(response.data) }; } return response; } catch (error) { throw error instanceof Error ? error : new Error("Mutation failed"); } }, onSuccess: (data, variables, context) => { if (onSuccess) { onSuccess(data, variables, context); } queryClient.invalidateQueries({ queryKey: [endpoint] }); }, onError: (error, variables, context) => { if (onError) { onError(error, variables, context); } }, ...mutationOptions }); const invalidateQueries = (queryKeys = [endpoint]) => { return queryClient.invalidateQueries({ queryKey: queryKeys }); }; return { ...mutation, invalidateQueries }; }; export { useVrmMutation }; //# sourceMappingURL=useVrmMutation.mjs.map