Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 139x 139x 139x 139x 139x 139x 139x 139x 91x 91x 73x 89x 18x 18x 17x 17x 18x 18x 18x 139x 139x 139x 139x 1x 39x 39x 37x 37x 1x 207x 207x 207x 207x 207x 207x 207x 207x 2x 207x 207x 207x 39x 39x 207x 207x 207x 207x 207x 207x | import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import axios from "axios";
import { toast } from "react-toastify";
// example
// queryKey ["/api/users/all"] for "api/users/all"
// queryKey ["/api/users","4"] for "/api/users?id=4"
// For axiosParameters
//
// {
// method: 'post',
// url: '/user/12345',
// data: {
// firstName: 'Fred',
// lastName: 'Flintstone'
// }
// }
//
// GET Example:
// useBackend(
// ["/api/admin/users"],
// { method: "GET", url: "/api/admin/users" },
// []
// );
export function useBackend(
queryKey,
axiosParameters,
initialData,
suppressToasts = false,
) {
return useQuery({
queryKey: queryKey,
queryFn: async () => {
try {
const response = await axios(axiosParameters);
return response.data;
} catch (e) {
const errorMessage = `Error communicating with backend via ${axiosParameters.method} on ${axiosParameters.url}`;
if (!suppressToasts) {
toast(errorMessage);
}
console.error(errorMessage, e);
throw e;
}
},
initialData: initialData,
});
}
const wrappedParams = async (params) => {
return await (
await axios(params)
).data;
};
export function useBackendMutation(
objectToAxiosParams,
useMutationParams,
queryKey = null,
) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (object) => wrappedParams(objectToAxiosParams(object)),
onError: (data) => {
toast(`${data}`);
},
// Stryker disable all: Not sure how to set up the complex behavior needed to test this
onSettled: () => {
if (queryKey !== null)
queryClient.invalidateQueries({ queryKey: queryKey });
},
// Stryker restore all
retry: false,
...useMutationParams,
});
}
|