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 82 83 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 842x 842x 842x 195x 195x 156x 193x 39x 39x 1x 38x 38x 38x 38x 20x 20x 842x 842x 842x 842x 842x 1x 22x 22x 11x 11x 1x 349x 349x 349x 349x 349x 349x 349x 11x 11x 1x 10x 10x 10x 10x 349x 349x 349x 13x 349x 349x 349x 349x 349x 349x | 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, rest) { return useQuery({ queryKey: queryKey, queryFn: 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: initialData, ...rest, }); } 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) queryClient.invalidateQueries(queryKey); }, // Stryker restore all retry: false, ...useMutationParams, }); } |