import React, { useContext, useEffect, useState } from "react"; import { Switch, Route, useHistory } from "react-router-dom"; import { Dropdown, Layout, Menu } from "antd"; import UserOutlined from "@ant-design/icons/UserOutlined"; import webUiPackage from "../../package.json"; import { useAccount } from "../model/account"; import ErrorBoundary from "./ErrorBoundary"; import ErrorPage from "./ErrorPage"; import ControlContext from "./ControlContext"; import { pages } from "../pages"; const { Header, Sider } = Layout; export default function SiteLayout(props) { let history = useHistory(); let [currentSidebarPath, setCurrentSidebarPath] = useState(null); let account = useAccount(); let plugins = useContext(ControlContext).plugins; function SetSidebar(setSidebarProps) { useEffect(() => { setCurrentSidebarPath(setSidebarProps.path); }); return null; } let accountMenu =
; let combinedPages = [...pages]; for (let plugin of plugins.values()) { combinedPages.push(...plugin.pages); } let menuItems = []; let menuGroups = new Map(); for (let { sidebarName, sidebarGroup, permission, path } of combinedPages) { if (!sidebarName || permission && !account.hasPermission(permission)) { continue; } if (sidebarGroup) { let group = menuGroups.get(sidebarGroup); if (!group) { group = []; menuGroups.set(sidebarGroup, group); } group.push(