import type { AppRouter } from "@pram/api/routers/index"; import { env } from "@pram/env/web"; import { QueryCache, QueryClient } from "@tanstack/react-query"; import { createTRPCClient, httpBatchLink, TRPCClientError } from "@trpc/client"; import { createTRPCOptionsProxy } from "@trpc/tanstack-react-query"; import { toast } from "sonner"; export const queryClient = new QueryClient({ queryCache: new QueryCache({ onError: (error, query) => { if ( error instanceof TRPCClientError && (error.data?.code === "UNAUTHORIZED" || error.message.toLowerCase().includes("authentication required")) ) { return; } toast.error(error.message, { action: { label: "retry", onClick: query.invalidate, }, }); }, }), }); export const trpcClient = createTRPCClient({ links: [ httpBatchLink({ url: `${env.VITE_SERVER_URL}/trpc`, fetch(url, options) { return fetch(url, { ...options, credentials: "include", }); }, }), ], }); export const trpc = createTRPCOptionsProxy({ client: trpcClient, queryClient, });