diff options
Diffstat (limited to 'modern/src/settings/OptionsLayout')
-rw-r--r-- | modern/src/settings/OptionsLayout/index.js | 7 | ||||
-rw-r--r-- | modern/src/settings/OptionsLayout/useRoutes.js | 17 |
2 files changed, 19 insertions, 5 deletions
diff --git a/modern/src/settings/OptionsLayout/index.js b/modern/src/settings/OptionsLayout/index.js index f6f1e4b8..4bcb380e 100644 --- a/modern/src/settings/OptionsLayout/index.js +++ b/modern/src/settings/OptionsLayout/index.js @@ -1,5 +1,5 @@ import React, { useState, useEffect } from 'react'; -import { useHistory, useLocation } from 'react-router-dom'; +import { useLocation } from 'react-router-dom'; import { Typography, Divider, @@ -49,14 +49,13 @@ const useStyles = makeStyles(theme => ({ const OptionsLayout = ({ children }) => { const classes = useStyles(); - const history = useHistory(); const location = useLocation(); const [openDrawer, setOpenDrawer] = useState(false); const [optionTitle, setOptionTitle] = useState(); const routes = useRoutes(); useEffect(() => { - const activeRoute = routes.find(route => route.href === location.pathname); + const activeRoute = routes.find(route => location.pathname.match(route.match)); setOptionTitle(activeRoute.name); }, [location, routes]); @@ -82,7 +81,7 @@ const OptionsLayout = ({ children }) => { classes={{ root: classes.drawerContainer, paper: classes.drawer }} > <div className={classes.drawerHeader}> - <IconButton onClick={() => history.push('/')}> + <IconButton component="a" href="/"> <ArrowBackIcon /> </IconButton> <Typography variant="h6" color="inherit" noWrap> diff --git a/modern/src/settings/OptionsLayout/useRoutes.js b/modern/src/settings/OptionsLayout/useRoutes.js index e53e8fd4..6796a563 100644 --- a/modern/src/settings/OptionsLayout/useRoutes.js +++ b/modern/src/settings/OptionsLayout/useRoutes.js @@ -8,9 +8,14 @@ import StorageIcon from '@material-ui/icons/Storage'; import BuildIcon from '@material-ui/icons/Build'; import PeopleIcon from '@material-ui/icons/People'; import BarChartIcon from '@material-ui/icons/BarChart'; -import { getIsAdmin } from '../../selectors'; +import { getIsAdmin, getUserId } from '../../selectors'; import t from '../../common/localization'; +const accountRoute = { + name: t('settingsUser'), + icon: <PersonIcon /> +}; + const adminRoutes = [ { subheader: t('userAdmin') }, { @@ -31,32 +36,39 @@ const adminRoutes = [ ]; const mainRoutes = [ + accountRoute, { + match: 'geofence', name: t('sharedGeofences'), href: '/geofences', icon: <CreateIcon /> }, { + match: 'notification', name: t('sharedNotifications'), href: '/settings/notifications', icon: <NotificationsIcon /> }, { + match: 'group', name: t('settingsGroups'), href: '/settings/groups', icon: <FolderIcon /> }, { + match: 'driver', name: t('sharedDrivers'), href: '/settings/drivers', icon: <PersonIcon /> }, { + match: 'attribute', name: t('sharedComputedAttributes'), href: '/settings/attributes', icon: <StorageIcon /> }, { + match: 'maintenance', name: t('sharedMaintenance'), href: '/settings/maintenances', icon: <BuildIcon /> @@ -65,6 +77,9 @@ const mainRoutes = [ export default () => { const isAdmin = useSelector(getIsAdmin); + const userId = useSelector(getUserId); + accountRoute.match = accountRoute.href = `/user/${userId}`; + return useMemo(() => [...mainRoutes, ...(isAdmin ? adminRoutes : [])], [ isAdmin ]); |