import React, {useContext, useEffect, useState} from 'react'; import PropTypes from 'prop-types'; import NavbarDropdown from './NavbarDropdown'; import NavbarDropdownComponents from './NavbarDropdownComponents'; // import { // // authenticationRoutes, // // chatRoutes, // // componentRoutes, // // ECommerceRoutes, // // emailRoutes, // // homeRoutes, // // pageRoutes, // // pluginRoutes, // // utilityRoutes, // // widgetsRoutes, // // kanbanRoutes, // } from '../../routes'; import routes from '../../routes'; import { NavItem } from 'reactstrap'; import { NavLink } from 'react-router-dom'; import {breakpoints, createCookie, getCookieValue, getPageName} from '../../helpers/utils'; import {APIBaseURL, navbarBreakPoint, topNavbarBreakpoint} from '../../config'; import AppContext from '../../context/Context'; import { withTranslation } from 'react-i18next'; import withRedirect from "../../hoc/withRedirect"; import {toast} from "react-toastify"; const NavbarTopDropDownMenus = ({ setRedirectUrl, setRedirect, setNavbarCollapsed, setShowBurgerMenu, t }) => { useEffect(() => { let is_logged_in = getCookieValue('is_logged_in'); let user_name = getCookieValue('user_name'); let user_display_name = getCookieValue('user_display_name'); let user_uuid = getCookieValue('user_uuid'); let token = getCookieValue('token'); if (is_logged_in === null || !is_logged_in) { setRedirectUrl(`/authentication/basic/login`); setRedirect(true); } else { //update expires time of cookies createCookie('is_logged_in', true, 1000 * 60 * 60 * 8); createCookie('user_name', user_name, 1000 * 60 * 60 * 8); createCookie('user_display_name', user_display_name, 1000 * 60 * 60 * 8); createCookie('user_uuid', user_uuid, 1000 * 60 * 60 * 8); createCookie('token', token, 1000 * 60 * 60 * 8); } }); const { isCombo, isTopNav } = useContext(AppContext); // const components = [componentRoutes, pluginRoutes, utilityRoutes]; // const pages = [pageRoutes, kanbanRoutes, widgetsRoutes, chatRoutes, emailRoutes, ECommerceRoutes]; const handleSetNavbarCollapsed = () => { const windowWidth = window.innerWidth; isTopNav && !isCombo && windowWidth < breakpoints[topNavbarBreakpoint] && setNavbarCollapsed(false); isCombo && windowWidth < breakpoints[navbarBreakPoint] && setShowBurgerMenu(false); }; const isLanding = getPageName('landing'); const [ showRoutes, setShowRoutes] = useState([routes[0]]); useEffect(() => { let isResponseOK = false; fetch(APIBaseURL + '/menus/web', { method: 'GET', headers: { "Content-type": "application/json", "User-UUID": getCookieValue('user_uuid'), "Token": getCookieValue('token') }, body: null, }).then(response => { //console.log(response); if (response.ok) { isResponseOK = true; } return response.json(); }).then(json => { //console.log(json); if (isResponseOK) { let showRoutes = [routes[0]]; for (let i = 0; i < routes.length; i++) { let route = routes[i]; if(route.to in json && 'children' in route) { let showChildren = []; for (let j = 0; j < route.children.length; j++) { const child = route.children[j]; if(json[route.to].indexOf(child.to) !== -1) { showChildren.push(child); } } route.children = showChildren; showRoutes.push(route) }else if(route.to in json) { showRoutes.push(route) } } setShowRoutes(showRoutes); } else { toast.error(json.description); } }).catch(err => { console.log(err); }); }, []); return ( <> {showRoutes.map(route => { if ('children' in route) { return( ) } else { return ( {t(route.name)} ) } } )} {/* Documentation */} ); }; NavbarTopDropDownMenus.propTypes = { setNavbarCollapsed: PropTypes.func.isRequired }; export default withTranslation()(withRedirect(NavbarTopDropDownMenus));