import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { httpBatchLink } from "@trpc/client"; import { useState } from "react"; import { trpc } from "./trpc"; import { constants } from "./constants"; import Cookies from "js-cookie"; import SuperJSON from "superjson"; export function TrpcProvider({ children }: { children: React.ReactNode }) { const [queryClient] = useState(() => new QueryClient()); const [trpcClient] = useState(() => trpc.createClient({ links: [ httpBatchLink({ url: constants.trpcUrl, fetch: async (input, init) => { const response = await fetch(input, init); if (response.status === 401) { Cookies.remove("token"); window.location.href = "/"; } return response; }, async headers() { return { authorization: Cookies.get("token") ? `Bearer ${Cookies.get("token")}` : undefined, }; }, transformer: SuperJSON, }), ], }), ); return ( {children} ); }