Skip to content
Snippets Groups Projects
Commit 59c94d7b authored by Bastien DUMONT's avatar Bastien DUMONT :angel:
Browse files

update routes

parent d84af6b5
No related branches found
No related tags found
2 merge requests!99chore: fix typos,!98feat: update visuals
Pipeline #57772 passed
This commit is part of merge request !98. Comments created here will be created in the context of that merge request.
import { BrowserRouter } from 'react-router-dom' import { BrowserRouter } from 'react-router-dom'
import Layout from './components/Layout/Layout'
import Routes from './components/Routes/Routes'
import { UserContext } from './hooks/userContext'
import { ToastContainer } from 'react-toastify' import { ToastContainer } from 'react-toastify'
import 'react-toastify/dist/ReactToastify.css' import 'react-toastify/dist/ReactToastify.css'
import Layout from './components/Layout/Layout'
import Router from './components/Routes/Router'
import useFindUser from './hooks/useFindUser' import useFindUser from './hooks/useFindUser'
import { UserContext } from './hooks/userContext'
function App() { function App() {
const { user, setUser, isLoading } = useFindUser() const { user, setUser, isLoading } = useFindUser()
...@@ -13,7 +13,7 @@ function App() { ...@@ -13,7 +13,7 @@ function App() {
<BrowserRouter> <BrowserRouter>
<UserContext.Provider value={{ user, setUser, isLoading }}> <UserContext.Provider value={{ user, setUser, isLoading }}>
<Layout> <Layout>
<Routes /> <Router />
</Layout> </Layout>
</UserContext.Provider> </UserContext.Provider>
<ToastContainer <ToastContainer
......
import React, { useContext } from 'react' import React, { useContext } from 'react'
import routes from '../../constants/routes.json'
import logo from '../../assets/icons/ecolyo-logo.svg'
import './menu.scss'
import { NavLink } from 'react-router-dom' import { NavLink } from 'react-router-dom'
import { UserContext } from '../../hooks/userContext' import logo from '../../assets/icons/ecolyo-logo.svg'
import { useAuth } from '../../hooks/useAuth' import { useAuth } from '../../hooks/useAuth'
import { Route } from '../../models/route.model' import { UserContext } from '../../hooks/userContext'
import { routes } from '../Routes/Router'
import './menu.scss'
const Menu: React.FC = () => { const Menu: React.FC = () => {
const { user } = useContext(UserContext) const { user } = useContext(UserContext)
...@@ -17,7 +16,7 @@ const Menu: React.FC = () => { ...@@ -17,7 +16,7 @@ const Menu: React.FC = () => {
<img src={logo} alt="Ecolyo logo" className="logo" /> <img src={logo} alt="Ecolyo logo" className="logo" />
</div> </div>
<div className="menu-list"> <div className="menu-list">
{routes.map((route: Route) => ( {routes.map((route) => (
<NavLink key={route.label} to={route.path} activeClassName="active"> <NavLink key={route.label} to={route.path} activeClassName="active">
{route.label} {route.label}
</NavLink> </NavLink>
......
import React, { useContext } from 'react' import React, { useContext } from 'react'
import { NavLink } from 'react-router-dom' import { NavLink } from 'react-router-dom'
import routes from '../../constants/routes.json'
import { useAuth } from '../../hooks/useAuth' import { useAuth } from '../../hooks/useAuth'
import { UserContext } from '../../hooks/userContext' import { UserContext } from '../../hooks/userContext'
import { Route } from '../../models/route.model' import { routes } from '../Routes/Router'
import './navbar.scss' import './navbar.scss'
const Navbar: React.FC = () => { const Navbar: React.FC = () => {
...@@ -13,7 +12,7 @@ const Navbar: React.FC = () => { ...@@ -13,7 +12,7 @@ const Navbar: React.FC = () => {
return ( return (
<div className="navbar"> <div className="navbar">
<div className="menu-list"> <div className="menu-list">
{routes.map((route: Route) => ( {routes.map((route) => (
<NavLink key={route.label} to={route.path} activeClassName="active"> <NavLink key={route.label} to={route.path} activeClassName="active">
{route.label} {route.label}
</NavLink> </NavLink>
......
import React, { useContext } from 'react'
import { Route, Redirect } from 'react-router-dom'
import { UserContext } from '../../hooks/userContext'
interface PrivateRouteProps {
component: React.FC
path: string
exact: boolean
}
const PrivateRoute: React.FC<PrivateRouteProps> = ({
component,
path,
exact,
}: PrivateRouteProps) => {
const { user } = useContext(UserContext)
return user ? (
<Route path={path} exact={exact} component={component} />
) : (
<Redirect to="/login" />
)
}
export default PrivateRoute
import React, { useContext } from 'react'
import { Redirect, Route, Switch } from 'react-router-dom'
import { UserContext } from '../../hooks/userContext'
import Consents from '../Consents/Consents'
import Editing from '../Editing/Editing'
import Login from '../Login/Login'
import Prices from '../Prices/Prices'
import Settings from '../Settings/Settings'
const links: { [key: string]: { label: string; path: string } } = {
newsletter: {
label: 'Newsletter',
path: '/newsletter',
},
popups: {
label: 'Pop-ups',
path: '/popups',
},
prices: {
label: 'Prix',
path: '/prices',
},
consents: {
label: 'Consentements',
path: '/consents',
},
}
export const routes = Object.keys(links).map((key) => ({
label: links[key].label,
path: links[key].path,
}))
const Router: React.FC = () => {
const { user } = useContext(UserContext)
return (
<Switch>
{user ? (
<>
<Route exact path={links.newsletter.path} component={Editing} />
<Route exact path={links.prices.path} component={Prices} />
<Route exact path={links.popups.path} component={Settings} />
<Route exact path={links.consents.path} component={Consents} />
<Redirect path="*" to={links.newsletter.path} />
</>
) : (
<>
<Route path="/login" component={Login} />
<Redirect path="*" to="/login" />
</>
)}
</Switch>
)
}
export default Router
import React, { useContext } from 'react'
import { Redirect, Route, Switch } from 'react-router-dom'
import { UserContext } from '../../hooks/userContext'
import Consents from '../Consents/Consents'
import Editing from '../Editing/Editing'
import Login from '../Login/Login'
import Prices from '../Prices/Prices'
import Settings from '../Settings/Settings'
import PrivateRoute from './PrivateRoute'
const Routes: React.FC = () => {
const { user } = useContext(UserContext)
return (
<Switch>
{user && <Redirect path="/login" to="/editing" />}
<Route path="/login" component={Login} />
<PrivateRoute exact path="/editing" component={Editing} />
<PrivateRoute exact path="/prices" component={Prices} />
<PrivateRoute exact path="/settings" component={Settings} />
<PrivateRoute exact path="/consents" component={Consents} />
<Redirect path="*" to="/editing" />
</Switch>
)
}
export default Routes
[
{
"label": "Consentements",
"path": "/consents"
},
{
"label": "Edition",
"path": "/editing"
},
{
"label": "Paramètres",
"path": "/settings"
},
{
"label": "Prix",
"path": "/prices"
}
]
export interface Route {
label: string
path: string
}
export interface Routes extends Array<Route> {}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment