import React, { useState } from 'react'; import { addActiveElement } from '../../../actions/MainNavigation/mainNavigationActions'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { logout } from 'src/actions/Session/sessionActions'; import Notifications from './Notifications/Notifications'; import { useSelector, useDispatch } from "react-redux"; import Spinner from 'src/components/Spinner/Spinner'; import { Link, useHistory } from "react-router-dom"; import './Panel.scss'; const Panel = props => { const { i18n, userName, session: { look, user } } = useSelector(state => state.session); const session = useSelector(state => state.session); const { activeElement, focusedElement } = useSelector(state => state.mainNavigation); const dispatch = useDispatch(); const history = useHistory(); const [loading, setLoading] = useState(false); const [state, setState] = useState({ smallNavigationClass: 'small-navigation hidden' }); const toggleNavigation = event => { props.showTopNav(); if (state.smallNavigationClass === 'small-navigation hidden') { setState({ ...state, smallNavigationClass: 'small-navigation show' }); } else { setState({ ...state, smallNavigationClass: 'small-navigation hidden' }); } } const className = (activeName, extraClass = '') => { let className = 'top-link'; if (activeName === activeElement) { className += ' active'; } if (activeName === focusedElement) { className += ' focus'; } return className + ` ${extraClass}`; } const handleState = (tab, event) => { if (`${window.location.pathname}${window.location.search}` === tab) { return event.preventDefault(); } dispatch(addActiveElement(tab)); } const signOut = () => { setLoading(true); dispatch(logout()) .then(() => { setLoading(false); }, error => { setLoading(false); console.error(error); }); } return (
{loading && }
dispatch(addActiveElement('/list/user/'))}>
Logo
{userName === 'admin' && (<>
handleState("/list/package/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Packages}
handleState("/list/ip/", event)} onKeyPress={event => event.preventDefault()}>{i18n.IP}
handleState("/list/rrd/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Graphs}
)}
handleState("/list/stats/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Statistics}
handleState("/list/log/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Log}
{userName === 'admin' && (<>
handleState("/list/updates/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Updates}
{session.session.FIREWALL_SYSTEM &&
handleState("/list/firewall/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Firewall}
} )} {session.session.FILEMANAGER_KEY &&
{i18n['File Manager']}
} {session.session.SOFTACULOUS === "yes" &&
{i18n.Apps ?? 'Apps'}
} {userName === 'admin' && (
handleState("/list/server/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Server}
)}
{look ?
{user} {look}
: session.userName }
LOGO
{session.userName}
); } export default Panel;