2035Builder2
tRPC2y ago
13 replies
2035Builder

I commented my query out, but i still notice request are still been made. this is what my code look

I keep getting api request to backend continously even without making api request. my api client
import { useMemo, useCallback } from "react";
import Constants from "expo-constants";
import { useSupabaseClient } from "@supabase/auth-helpers-react";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { httpBatchLink, loggerLink, httpLink } from "@trpc/client";
import { createTRPCReact } from "@trpc/react-query";
import superjson from "superjson";

import type { AppRouter } from "@lumi/api";

/**
 * A set of typesafe hooks for consuming your API.
 */
export const api = createTRPCReact<AppRouter>();
export { type RouterInputs, type RouterOutputs } from "@lumi/api";


const getBaseUrl = () => {

  const debuggerHost = Constants.expoConfig?.hostUri;
  const localhost = debuggerHost?.split(":")[0];
  console.log("Localhost:", localhost); // Add logging

  if (!localhost) {
    // return "https://turbo.t3.gg";
    throw new Error(
      "Failed to get localhost. Please point to your production server.",
    );
  }
  return `http://${localhost}:3000`;
};

/**
 * A wrapper for your app that provides the TRPC context.
 * Use only in _app.tsx
 */
export const TRPCProvider = (props: { children: React.ReactNode }) => {
  const supabase = useSupabaseClient();

  const queryClient = useMemo(() => new QueryClient(), []);

  const getHeaders = useCallback(async () => {
    const headers = new Map<string, string>();
    headers.set("x-trpc-source", "expo-react");

    const { data } = await supabase.auth.getSession();
    const token = data.session?.access_token;
    console.log("called multiple times")
    if (token) headers.set("authorization", token);

    return Object.fromEntries(headers);
  }, [supabase]);

  const trpcClient = useMemo(
    () =>
      api.createClient({
        transformer: superjson,
        links: [
          httpLink({
            url: `${getBaseUrl()}/api/trpc`,
            headers: async () => await getHeaders(),
          }),
          loggerLink({
            enabled: (opts) =>
              process.env.NODE_ENV === "development" ||
              (opts.direction === "down" && opts.result instanceof Error),
            colorMode: "ansi",
            onError: (err) => {
              console.error("Client-side tRPC error:", err);
            },
          }),
        ],
      }),
    [getHeaders]
  );

  return (
    <api.Provider client={trpcClient} queryClient={queryClient}>
      <QueryClientProvider client={queryClient}>
        {props.children}
      </QueryClientProvider>
    </api.Provider>
  );
};
Was this page helpful?