import React from 'react'; import init, { greet } from 'hello'; import ReactDOM from 'react-dom/client'; import App from './App'; import { HelmetProvider } from 'react-helmet-async'; import { MotionConfig } from 'framer-motion'; import { listen } from '@tauri-apps/api/event'; import { setTheme } from './lib/theme'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { createBrowserRouter, RouterProvider } from 'react-router-dom'; import { Layout } from './components/Layout'; import { Workspaces } from './pages/Workspaces'; import './main.css'; import { convertDates, HttpRequest } from './lib/models'; import { requestsQueryKey } from './hooks/useRequest'; setTheme(); // WASM stuff await init(); greet(); const queryClient = new QueryClient(); await listen('updated_request', ({ payload: request }: { payload: HttpRequest }) => { queryClient.setQueryData(requestsQueryKey(request.workspaceId), (requests: HttpRequest[] = []) => requests.map((r) => (r.id === request.id ? convertDates(request) : r)), ); }); await listen('created_request', ({ payload: request }: { payload: HttpRequest }) => { queryClient.setQueryData( requestsQueryKey(request.workspaceId), (requests: HttpRequest[] = []) => [...requests, convertDates(request)], ); }); await listen('deleted_request', ({ payload: request }: { payload: HttpRequest }) => { queryClient.setQueryData(requestsQueryKey(request.workspaceId), (requests: HttpRequest[] = []) => requests.filter((r) => r.id !== request.id), ); }); const router = createBrowserRouter([ { path: '/', element: , children: [ { path: '/', element: , }, { path: '/workspaces/:workspaceId', element: , }, { path: '/workspaces/:workspaceId/requests/:requestId', element: , }, ], }, ]); ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( , );