28 lines
821 B
TypeScript
28 lines
821 B
TypeScript
import { QueryClient, type Mutation } from "@tanstack/react-query"
|
|
import { toast } from "sonner"
|
|
import { ApiError } from "@/lib/api/client"
|
|
|
|
function onMutationError(error: Error, _vars: unknown, _ctx: unknown, mutation: Mutation) {
|
|
if (mutation.options.onError) return
|
|
const msg = error instanceof ApiError ? `Error ${error.status}` : "Something went wrong"
|
|
toast.error(msg)
|
|
}
|
|
|
|
export const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
staleTime: 60_000,
|
|
gcTime: 5 * 60_000,
|
|
refetchOnWindowFocus: false,
|
|
refetchOnReconnect: false,
|
|
retry: (failureCount, error) => {
|
|
if (error instanceof ApiError && error.status < 500) return false
|
|
return failureCount < 2
|
|
},
|
|
},
|
|
mutations: {
|
|
onError: onMutationError as never,
|
|
},
|
|
},
|
|
})
|