/* eslint-disable no-multi-spaces */ /* eslint-disable react/jsx-props-no-multi-spaces */ import React, { useEffect } from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import urljoin from 'url-join'; import loggerFactory from '@alias/logger'; import AdminHomeContainer from '../../../services/AdminHomeContainer'; import { withUnstatedContainers } from '../../UnstatedUtils'; import { toastError } from '../../../util/apiNotification'; const logger = loggerFactory('growi:admin'); const AdminNavigation = (props) => { const { t, adminHomeContainer } = props; const pathname = window.location.pathname; useEffect(() => { (async() => { try { await adminHomeContainer.retrieveAdminHomeData(); } catch (err) { toastError(err); adminHomeContainer.setState({ retrieveError: err }); logger.error(err); } })(); }, [adminHomeContainer]); // eslint-disable-next-line react/prop-types const MenuLabel = ({ menu }) => { switch (menu) { case 'app': return <> { t('App Settings') }>; case 'security': return <> { t('security_settings') }>; case 'markdown': return <> { t('Markdown Settings') }>; case 'customize': return <> { t('Customize') }>; case 'importer': return <> { t('Import Data') }>; case 'export': return <> { t('Export Archive Data') }>; case 'notification': return <> { t('Notification Settings') }>; case 'users': return <> { t('User_Management') }>; case 'user-groups': return <> { t('UserGroup Management') }>; case 'search': return <> { t('Full Text Search Management') }>; case 'cloud': return <> { t('to_cloud_settings')} >; default: return <> { t('Wiki Management Home Page') }>; } }; const MenuLink = ({ // eslint-disable-next-line react/prop-types menu, isRoot, isListGroupItems, isActive, }) => { const pageTransitionClassName = isListGroupItems ? 'list-group-item list-group-item-action border-0 round-corner' : 'dropdown-item px-3 py-2'; return ( ); }; const isActiveMenu = (path) => { return (pathname.startsWith(urljoin('/admin', path))); }; const getListGroupItemOrDropdownItemList = (isListGroupItems) => { return ( <> {adminHomeContainer.state.envVars?.GROWI_CLOUD_URI != null && adminHomeContainer.state.envVars?.GROWI_APP_ID_FOR_GROWI_CLOUD != null && ( )} > ); }; return ( {/* List group */} {getListGroupItemOrDropdownItemList(true)} {/* Dropdown */} {pathname === '/admin' && } {isActiveMenu('/app') && } {isActiveMenu('/security') && } {isActiveMenu('/markdown') && } {isActiveMenu('/customize') && } {isActiveMenu('/importer') && } {isActiveMenu('/export') && } {(isActiveMenu('/notification') || isActiveMenu('/global-notification')) && } {isActiveMenu('/users') && } {isActiveMenu('/user-groups') && } {isActiveMenu('/search') && } {getListGroupItemOrDropdownItemList(false)} ); }; const AdminNavigationWrapper = withUnstatedContainers(AdminNavigation, [AdminHomeContainer]); AdminNavigation.propTypes = { t: PropTypes.func.isRequired, // i18next adminHomeContainer: PropTypes.instanceOf(AdminHomeContainer).isRequired, }; export default withTranslation()(AdminNavigationWrapper);