import ManageHistoryIcon from "@mui/icons-material/ManageHistory"; import { useEffect, useState, Suspense } from "react"; import { CheckForApplicationUpdate, AppBar, TitlePortal, InspectorButton, Confirm, Layout, Logout, Menu, useLogout, UserMenu, useStore, } from "react-admin"; import Footer from "./Footer"; import { LoginMethod } from "../pages/LoginPage"; import { MenuItem, GetConfig, ClearConfig } from "../utils/config"; import { Icons, DefaultIcon } from "../utils/icons"; import { ServerNotificationsBadge } from "./etke.cc/ServerNotificationsBadge"; import { ServerProcessResponse, ServerStatusResponse } from "../synapse/dataProvider"; import ServerStatusBadge from "./etke.cc/ServerStatusBadge"; import { ServerStatusStyledBadge } from "./etke.cc/ServerStatusBadge"; const AdminUserMenu = () => { const [open, setOpen] = useState(false); const logout = useLogout(); const checkLoginType = (ev: React.MouseEvent) => { const loginType: LoginMethod = (localStorage.getItem("login_type") || "credentials") as LoginMethod; if (loginType === "accessToken") { ev.stopPropagation(); setOpen(true); } }; const handleConfirm = () => { setOpen(false); logout(); }; const handleDialogClose = () => { setOpen(false); ClearConfig(); window.location.reload(); }; return (
); }; const AdminAppBar = () => { return ( }> ); }; const AdminMenu = props => { const [menu, setMenu] = useState([] as MenuItem[]); const [etkeRoutesEnabled, setEtkeRoutesEnabled] = useState(false); useEffect(() => { setMenu(GetConfig().menu); if (GetConfig().etkeccAdmin) { setEtkeRoutesEnabled(true); } }, []); const [serverProcess, setServerProcess] = useStore("serverProcess", { command: "", locked_at: "", }); const [serverStatus, setServerStatus] = useStore("serverStatus", { success: false, ok: false, host: "", results: [], }); return ( {etkeRoutesEnabled && ( } primaryText="Server Status" /> )} {etkeRoutesEnabled && ( } primaryText="Server Actions" /> )} {menu && menu.map((item, index) => { const { url, icon, label } = item; const IconComponent = Icons[icon] as React.ComponentType | undefined; return ( : } onClick={props.onMenuClick} /> ); })} ); }; export const AdminLayout = ({ children }) => { return ( <> {children}