Files
relay/client/src/App.tsx
2025-01-02 20:10:08 +01:00

70 lines
1.4 KiB
TypeScript

import {
createBrowserRouter,
Navigate,
RouterProvider,
} from 'react-router-dom';
import { Suspense } from 'react';
import Chat from './pages/Chat';
import Login from './pages/Login';
import Signup from './pages/Signup';
import Settings from './pages/Settings';
import Lost from './pages/404';
import { AuthProvider } from '@/utils/AuthProvider.tsx';
import ProtectedRoutes from './utils/ProtectedRoutes';
import PublicRoute from './utils/PublicRoute';
import { ChatProvider } from './context/chat/ChatProvider';
import LoadingScreen from './components/LoadingScreen';
const router = createBrowserRouter([
{
path: '/',
element: <Navigate to="/chat" replace />,
},
{
element: <ProtectedRoutes />,
children: [
{
path: '/chat',
element: (
<Suspense fallback={<LoadingScreen />}>
<ChatProvider>
<Chat />
</ChatProvider>
</Suspense>
),
},
{
path: '/settings',
element: <Settings />,
},
],
},
{
element: <PublicRoute />,
children: [
{
path: '/login',
element: <Login />,
},
{
path: '/signup',
element: <Signup />,
},
],
},
{
path: '*',
element: <Lost />,
},
]);
function App() {
return (
<AuthProvider>
<RouterProvider router={router} />
</AuthProvider>
);
}
export default App;