import { MutationCache, QueryCache, QueryClient } from "@tanstack/react-query"; import { toast } from "react-toastify"; export function createAppQueryClient(): QueryClient { return new QueryClient({ queryCache: new QueryCache({ onError: (error, query) => { if (query.meta?.suppressErrorToast) return; console.error("Query error:", error); const message = error instanceof Error ? error.message : "An error occurred while fetching data"; toast.error(message); }, }), mutationCache: new MutationCache({ onError: (error, _variables, _context, mutation) => { if (mutation.options.meta?.suppressErrorToast) return; console.error("Mutation error:", error); const message = error instanceof Error ? error.message : "An error occurred while updating data"; toast.error(message); }, }), defaultOptions: { queries: { staleTime: 5 * 60 * 1000, gcTime: 10 * 60 * 1000, retry: 1, refetchOnWindowFocus: false, }, }, }); } export const queryClient = createAppQueryClient(); export default queryClient;