diff --git a/ui/src/layout/AppBar.js b/ui/src/layout/AppBar.js index 2e01a53e7..f7ac7ebdb 100644 --- a/ui/src/layout/AppBar.js +++ b/ui/src/layout/AppBar.js @@ -1,8 +1,17 @@ -import React, { forwardRef } from 'react' -import { AppBar as RAAppBar, UserMenu, useTranslate } from 'react-admin' +import React, { createElement, forwardRef } from 'react' +import { + AppBar as RAAppBar, + UserMenu, + MenuItemLink, + useTranslate, + getResources, +} from 'react-admin' +import { useSelector } from 'react-redux' import { makeStyles, MenuItem, ListItemIcon } from '@material-ui/core' +import ViewListIcon from '@material-ui/icons/ViewList' import InfoIcon from '@material-ui/icons/Info' import AboutDialog from './AboutDialog' +import PersonalMenu from './PersonalMenu' const useStyles = makeStyles((theme) => ({ root: { @@ -45,11 +54,46 @@ const AboutMenuItem = forwardRef(({ onClick, ...rest }, ref) => { ) }) -const CustomUserMenu = (props) => ( - - - -) +const settingsResources = (resource) => + resource.hasList && + resource.options && + resource.options.subMenu === 'settings' + +const CustomUserMenu = ({ onClick, ...rest }) => { + const translate = useTranslate() + const resources = useSelector(getResources) + const classes = useStyles(rest) + + const renderSettingsMenuItemLink = (resource) => { + const label = translate(`resources.${resource.name}.name`, { + smart_count: 2, + }) + return ( + + } + onClick={onClick} + sidebarIsOpen={true} + /> + ) + } + + return ( + + +
+ {resources.filter(settingsResources).map(renderSettingsMenuItemLink)} +
+ +
+ ) +} const AppBar = (props) => } /> diff --git a/ui/src/layout/Menu.js b/ui/src/layout/Menu.js index deff95bfd..2ef57cff8 100644 --- a/ui/src/layout/Menu.js +++ b/ui/src/layout/Menu.js @@ -4,12 +4,10 @@ import { useMediaQuery } from '@material-ui/core' import { useTranslate, MenuItemLink, getResources } from 'react-admin' import { withRouter } from 'react-router-dom' import LibraryMusicIcon from '@material-ui/icons/LibraryMusic' -import SettingsIcon from '@material-ui/icons/Settings' import ViewListIcon from '@material-ui/icons/ViewList' import AlbumIcon from '@material-ui/icons/Album' import SubMenu from './SubMenu' import inflection from 'inflection' -import PersonalMenu from './PersonalMenu' import albumLists from '../album/albumLists' const translatedResourceName = (resource, translate) => @@ -108,21 +106,6 @@ const Menu = ({ onMenuClick, dense, logout }) => { > {resources.filter(subItems('library')).map(renderResourceMenuItemLink)} - handleToggle('menuSettings')} - isOpen={state.menuSettings} - sidebarIsOpen={open} - name="menu.settings" - icon={} - dense={dense} - > - {resources.filter(subItems('settings')).map(renderResourceMenuItemLink)} - - {resources.filter(subItems(undefined)).map(renderResourceMenuItemLink)} {isXsmall && logout}