ATProto forum built with ESAV
1import { StrictMode } from "react";
2import ReactDOM from "react-dom/client";
3import { RouterProvider, createRouter } from "@tanstack/react-router";
4
5// Import the generated route tree
6import { routeTree } from "./routeTree.gen";
7
8import "./styles.css";
9import reportWebVitals from "./reportWebVitals.ts";
10import { OAuthProvider } from "./providers/OAuthProvider.tsx";
11import { PersistentStoreProvider } from "./providers/PersistentStoreProvider.tsx";
12import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
13import { ESAVLiveProvider } from "./esav/ESAVLiveProvider.tsx";
14
15const queryClient = new QueryClient();
16const ESAV_WEBSOCKET_URL = 'wss://esav.whey.party/xrpc/party.whey.esav.esSync';
17
18// Create a new router instance
19const router = createRouter({
20 routeTree,
21 context: {
22 queryClient,
23 },
24 defaultPreload: "intent",
25 scrollRestoration: true,
26 defaultStructuralSharing: true,
27 defaultPreloadStaleTime: 0,
28});
29
30// Register the router instance for type safety
31declare module "@tanstack/react-router" {
32 interface Register {
33 router: typeof router;
34 }
35}
36
37// Render the app
38const rootElement = document.getElementById("app");
39if (rootElement && !rootElement.innerHTML) {
40 const root = ReactDOM.createRoot(rootElement);
41 root.render(
42 //<StrictMode>
43 <ESAVLiveProvider url={ESAV_WEBSOCKET_URL}>
44 <PersistentStoreProvider>
45 <OAuthProvider>
46 <QueryClientProvider client={queryClient}>
47 {/* Pass the router instance with the context to the provider */}
48 <RouterProvider router={router} />
49 </QueryClientProvider>
50 </OAuthProvider>
51 </PersistentStoreProvider>
52 </ESAVLiveProvider>
53 //</StrictMode>
54 );
55}
56
57// If you want to start measuring performance in your app, pass a function
58// to log results (for example: reportWebVitals(console.log))
59// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
60reportWebVitals();