import React, { useMemo } from 'react'; import { useSelector } from 'react-redux'; import CreateIcon from '@material-ui/icons/Create'; import NotificationsIcon from '@material-ui/icons/Notifications'; import FolderIcon from '@material-ui/icons/Folder'; import PersonIcon from '@material-ui/icons/Person'; 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 TodayIcon from '@material-ui/icons/Today'; import { useTranslation } from '../../LocalizationProvider'; const useAdminRoutes = (t) => useMemo(() => [ { subheader: t('userAdmin') }, { name: t('settingsServer'), href: '/admin/server', icon: , }, { name: t('settingsUsers'), href: '/admin/users', icon: , }, { name: t('statisticsTitle'), href: '/admin/statistics', icon: , }, ], [t]); const useMainRoutes = (t, userId) => useMemo(() => [ { name: t('settingsUser'), href: `/user/${userId}`, icon: , }, { match: 'geofence', name: t('sharedGeofences'), href: '/geofences', icon: , }, { match: 'notification', name: t('sharedNotifications'), href: '/settings/notifications', icon: , }, { match: 'group', name: t('settingsGroups'), href: '/settings/groups', icon: , }, { match: 'driver', name: t('sharedDrivers'), href: '/settings/drivers', icon: , }, { match: 'calendar', name: t('sharedCalendars'), href: '/settings/calendars', icon: , }, { match: 'attribute', name: t('sharedComputedAttributes'), href: '/settings/attributes', icon: , }, { match: 'maintenance', name: t('sharedMaintenance'), href: '/settings/maintenances', icon: , }, ], [t, userId]); export default () => { const t = useTranslation(); const isAdmin = useSelector((state) => state.session.user?.administrator); const userId = useSelector((state) => state.session.user?.id); const mainRoutes = useMainRoutes(t, userId); const adminRoutes = useAdminRoutes(t); return useMemo(() => [...mainRoutes, ...(isAdmin ? adminRoutes : [])], [ mainRoutes, isAdmin, adminRoutes, ]); };