-
Bastien DUMONT authoredBastien DUMONT authored
Router.tsx 1.76 KiB
import { Navigate, Route, Routes } from 'react-router-dom'
import { useWhoAmI } from '../../API'
import Consents from '../Consents/Consents'
import Loader from '../Loader/Loader'
import Login from '../Login/Login'
import Newsletter from '../Newsletter/Newsletter'
import Popups from '../Popups/Popups'
import Prices from '../Prices/Prices'
import SideBar from '../SideBar/SideBar'
export const links: Record<
string,
{ label: string; path: string; adminOnly?: boolean }
> = {
newsletter: {
label: 'Newsletter',
path: '/newsletter',
},
popups: {
label: 'Pop-ups',
path: '/popups',
},
prices: {
label: 'Prix',
path: '/prices',
},
consents: {
label: 'Consentements',
path: '/consents',
adminOnly: true,
},
}
export const routes = Object.keys(links).map(key => ({
label: links[key].label,
path: links[key].path,
adminOnly: links[key].adminOnly,
}))
const Router = () => {
const { data: user, isLoading } = useWhoAmI()
if (isLoading) return <Loader />
if (user) {
return (
<>
<SideBar />
<main className="wrapper">
<Routes>
<Route path={links.newsletter.path} element={<Newsletter />} />
<Route path={links.prices.path} element={<Prices />} />
<Route path="/popups" element={<Popups />} />
{user.isAdmin && (
<Route path={links.consents.path} element={<Consents />} />
)}
<Route path="/login" element={<Login />} />
<Route
path="*"
element={<Navigate replace to={links.newsletter.path} />}
/>
</Routes>
</main>
</>
)
}
return <Login />
}
export default Router