29 lines
705 B
TypeScript
29 lines
705 B
TypeScript
import { isServer, QueryClient } from "@tanstack/react-query";
|
|||
|
|
|
||
|
|
function makeQueryClient() {
|
||
|
|
return new QueryClient({
|
||
|
|
defaultOptions: {
|
||
|
|
queries: {
|
||
|
|
staleTime: 60 * 1000,
|
||
|
|
gcTime: 5 * 60 * 1000,
|
||
|
|
refetchOnWindowFocus: false,
|
||
|
|
retry: 1,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
let browserQueryClient: QueryClient | undefined = undefined;
|
||
|
|
|
||
|
|
export function getQueryClient() {
|
||
|
|
if (isServer) {
|
||
|
|
// Server: fresh client per request so caches never leak between users.
|
||
|
|
return makeQueryClient();
|
||
|
|
}
|
||
|
|
// Browser: single shared client so the cache survives route changes.
|
||
|
|
if (!browserQueryClient) {
|
||
|
|
browserQueryClient = makeQueryClient();
|
||
|
|
}
|
||
|
|
return browserQueryClient;
|
||
|
|
}
|