export const trpc = createTRPCReact<AppRouter>();
export const createTrpcClient = () => {
return trpc.createClient({
transformer: superjson,
links: [
httpBatchLink({
url: `${apiUrl}/trpc`,
headers: getHeaders,
}),
],
});
};
export const TrpcProvider = ({ children }: { children: React.ReactNode }) => {
const [queryClient] = useState(
() =>
new QueryClient({
queryCache: trpcQueryCache,
}),
);
const [trpcClient] = useState(() => createTrpcClient());
useEffect(() => {
console.debug("[TrpcProvider] Listening for AppState changes", Platform.OS);
const subscription = AppState.addEventListener(
"change",
async (status: AppStateStatus) => {
console.info(
`[TrpcProvider] AppState changed to ${status}, setting onlineManager and focusManager`,
);
focusManager.setFocused(status === "active");
},
);
return () => {
console.debug("[TrpcProvider] Unsubscribing from AppState changes");
subscription.remove();
};
}, []);
return (
<trpc.Provider client={trpcClient} queryClient={queryClient}>
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
</trpc.Provider>
);
};
export const trpc = createTRPCReact<AppRouter>();
export const createTrpcClient = () => {
return trpc.createClient({
transformer: superjson,
links: [
httpBatchLink({
url: `${apiUrl}/trpc`,
headers: getHeaders,
}),
],
});
};
export const TrpcProvider = ({ children }: { children: React.ReactNode }) => {
const [queryClient] = useState(
() =>
new QueryClient({
queryCache: trpcQueryCache,
}),
);
const [trpcClient] = useState(() => createTrpcClient());
useEffect(() => {
console.debug("[TrpcProvider] Listening for AppState changes", Platform.OS);
const subscription = AppState.addEventListener(
"change",
async (status: AppStateStatus) => {
console.info(
`[TrpcProvider] AppState changed to ${status}, setting onlineManager and focusManager`,
);
focusManager.setFocused(status === "active");
},
);
return () => {
console.debug("[TrpcProvider] Unsubscribing from AppState changes");
subscription.remove();
};
}, []);
return (
<trpc.Provider client={trpcClient} queryClient={queryClient}>
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
</trpc.Provider>
);
};