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 112x 112x 112x 112x 112x 112x 112x 112x 74x 74x 55x 73x 19x 19x 18x 18x 19x 19x 19x 112x 112x 112x 112x 1x 38x 38x 36x 36x 1x 188x 188x 188x 188x 188x 188x 188x 188x 2x 188x 188x 188x 38x 38x 188x 188x 188x 188x 188x 188x | 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,
});
}
|