|
import { createBrowserRouter, Navigate, Outlet } from 'react-router-dom'; |
|
import Root from './Root'; |
|
import Chat from './Chat'; |
|
import Search from './Search'; |
|
import { Login, Registration, RequestPasswordReset, ResetPassword } from '../components/Auth'; |
|
import { AuthContextProvider } from '../hooks/AuthContext'; |
|
import ApiErrorWatcher from '../components/Auth/ApiErrorWatcher'; |
|
|
|
const AuthLayout = () => ( |
|
<AuthContextProvider> |
|
<Outlet /> |
|
<ApiErrorWatcher /> |
|
</AuthContextProvider> |
|
); |
|
|
|
export const router = createBrowserRouter([ |
|
{ |
|
path: 'register', |
|
element: <Registration />, |
|
}, |
|
{ |
|
path: 'forgot-password', |
|
element: <RequestPasswordReset />, |
|
}, |
|
{ |
|
path: 'reset-password', |
|
element: <ResetPassword />, |
|
}, |
|
{ |
|
element: <AuthLayout />, |
|
children: [ |
|
{ |
|
path: 'login', |
|
element: <Login />, |
|
}, |
|
{ |
|
path: '/', |
|
element: <Root />, |
|
children: [ |
|
{ |
|
index: true, |
|
element: <Navigate to="/chat/new" replace={true} />, |
|
}, |
|
{ |
|
path: 'chat/:conversationId?', |
|
element: <Chat />, |
|
}, |
|
{ |
|
path: 'search/:query?', |
|
element: <Search />, |
|
}, |
|
], |
|
}, |
|
], |
|
}, |
|
]); |
|
|