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 | 151x 32x 32x 19x 13x 1x 12x 12x 13x 4x 7x 187x 187x 2x 1x 1x 1x 7x 5x 11x | import { useQuery, useMutation, useQueryClient } from "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) { return useQuery(queryKey, async () => { try { const response = await axios(axiosParameters); return response.data; } catch (e) { // Stryker disable next-line OptionalChaining if (e.response?.data?.message) { toast.error(e.response.data.message); } else { const errorMessage = `Error communicating with backend via ${axiosParameters.method} on ${axiosParameters.url}`; toast.error(errorMessage); } throw e; } }, { initialData }); } const wrappedParams = async (params) => { return await (await axios(params)).data; }; export function useBackendMutation(objectToAxiosParams, useMutationParams, queryKey = null) { const queryClient = useQueryClient(); return useMutation((object) => wrappedParams(objectToAxiosParams(object)), { onError: (error) => { // Stryker disable next-line OptionalChaining : we want to check if each nested object is there but we dont want to write tests for each specific case if (error.response?.data?.message) { toast.error(error.response.data.message); } else { const errorMessage = `Error communicating with backend via ${error.response.config.method} on ${error.response.config.url}`; toast.error(errorMessage); } }, // Stryker disable all: Not sure how to set up the complex behavior needed to test this onSettled: () => { if (queryKey !== null) queryKey.forEach((key) => { queryClient.invalidateQueries(key); }); }, // Stryker restore all retry: false, ...useMutationParams }) } |