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 84 85 86 87 88 89 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 438x 438x 438x 438x 438x 438x 438x 438x 438x 156x 156x 87x 155x 69x 69x 16x 16x 69x 69x 69x 438x 438x 438x 438x 438x 1x 56x 56x 35x 35x 1x 1397x 1397x 1397x 1397x 1397x 1397x 1397x 1397x 2x 1397x 1397x 1397x 54x 51x 51x 51x 59x 51x 51x 51x 1397x 1397x 1397x 1397x 1397x 1397x | 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, options = {}, ) { 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, ...options, }); } const wrappedParams = async (params) => { // Directly returning the promise allows useMutation to handle rejections. const response = await axios(params); return response.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) { // Handle array of query keys for cache invalidation if (Array.isArray(queryKey)) { queryKey.forEach((key) => { queryClient.invalidateQueries({ queryKey: [key] }); }); } } }, // Stryker restore all retry: false, ...useMutationParams, }); } |