'use client'; import { QueryClientProvider } from '@tanstack/react-query'; import { createTRPCClient, httpBatchLink } from '@trpc/client'; import { useState } from 'react'; import superjson from 'superjson'; import type { AppRouter } from '@/server/routers'; import { makeQueryClient } from './query-client'; import { TRPCProvider } from './utils'; function getBaseUrl() { if (typeof window !== 'undefined') return ''; return `http://localhost:${process.env.PORT ?? 3000}`; } let browserQueryClient: ReturnType | undefined; function getQueryClient() { if (typeof window === 'undefined') return makeQueryClient(); if (!browserQueryClient) browserQueryClient = makeQueryClient(); return browserQueryClient; } export function QueryProvider({ children }: { children: React.ReactNode }) { const queryClient = getQueryClient(); const [trpcClient] = useState(() => createTRPCClient({ links: [ httpBatchLink({ url: `${getBaseUrl()}/api/trpc`, transformer: superjson, }), ], }), ); return ( {children} ); }