36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
'use client'
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
|
|
import { ReactNode, useState } from 'react'
|
|
|
|
interface QueryProviderProps {
|
|
children: ReactNode
|
|
}
|
|
|
|
export function QueryProvider({ children }: QueryProviderProps) {
|
|
const [queryClient] = useState(
|
|
() =>
|
|
new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
// With SSR, we usually want to set some default staleTime
|
|
// above 0 to avoid refetching immediately on the client
|
|
staleTime: 60 * 1000, // 1 minute
|
|
retry: (failureCount, error: any) => {
|
|
// Don't retry on 4xx errors
|
|
if (error?.status >= 400 && error?.status < 500) {
|
|
return false
|
|
}
|
|
// Retry up to 3 times for other errors
|
|
return failureCount < 3
|
|
},
|
|
},
|
|
mutations: {
|
|
retry: false, // Don't retry mutations by default
|
|
},
|
|
},
|
|
})
|
|
)
|
|
|
|
return <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
|
|
}
|