/* eslint-disable react/react-in-jsx-scope */ /** * By default, Remix will handle hydrating your app on the client for you. * You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨ * For more information, see https://remix.run/file-conventions/entry.client */ import { HydratedRouter } from "react-router/dom"; import React, { startTransition, StrictMode } from "react"; import { hydrateRoot } from "react-dom/client"; import { Provider } from "react-redux"; import posthog from "posthog-js"; import "./i18n"; import { QueryClientProvider } from "@tanstack/react-query"; import store from "./store"; import OpenHands from "./api/open-hands"; import { displayErrorToast } from "./utils/custom-toast-handlers"; import { queryClient } from "./query-client-config"; function PosthogInit() { const [posthogClientKey, setPosthogClientKey] = React.useState( null, ); React.useEffect(() => { (async () => { try { const config = await OpenHands.getConfig(); setPosthogClientKey(config.POSTHOG_CLIENT_KEY); } catch (error) { displayErrorToast("Error fetching PostHog client key"); } })(); }, []); React.useEffect(() => { if (posthogClientKey) { posthog.init(posthogClientKey, { api_host: "https://us.i.posthog.com", person_profiles: "identified_only", }); } }, [posthogClientKey]); return null; } async function prepareApp() { if ( process.env.NODE_ENV === "development" && import.meta.env.VITE_MOCK_API === "true" ) { const { worker } = await import("./mocks/browser"); await worker.start({ onUnhandledRequest: "bypass", }); } } prepareApp().then(() => startTransition(() => { hydrateRoot( document, , ); }), );