vormiaqueryjs
Version:
Vormia Query Js - A npm package for query management with VormiaPHP laravel Backend application
68 lines (67 loc) • 1.73 kB
JavaScript
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