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 225x 225x 225x 225x 225x 225x 225x 225x 225x 95x 95x 61x 94x 34x 34x 16x 16x 34x 34x 34x 225x 225x 225x 225x 225x 1x 40x 40x 28x 28x 1x 710x 710x 710x 710x 710x 710x 710x 710x 2x 710x 710x 710x 38x 36x 36x 36x 44x 36x 36x 36x 710x 710x 710x 710x 710x 710x | 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, }); } |