"use client"; import { ColorModeContext } from "@contexts/color-mode"; import DarkModeOutlined from "@mui/icons-material/DarkModeOutlined"; import LightModeOutlined from "@mui/icons-material/LightModeOutlined"; import Logout from "@mui/icons-material/Logout"; import SwapHoriz from "@mui/icons-material/SwapHoriz"; import AppBar from "@mui/material/AppBar"; import Avatar from "@mui/material/Avatar"; import ButtonBase from "@mui/material/ButtonBase"; import Divider from "@mui/material/Divider"; import IconButton from "@mui/material/IconButton"; import ListItemIcon from "@mui/material/ListItemIcon"; import ListItemText from "@mui/material/ListItemText"; import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; import Stack from "@mui/material/Stack"; import Toolbar from "@mui/material/Toolbar"; import Typography from "@mui/material/Typography"; import { useGetIdentity, useLogout } from "@refinedev/core"; import { HamburgerMenu, RefineThemedLayoutHeaderProps } from "@refinedev/mui"; import React, { useContext, useState } from "react"; import { ProjectSelector } from "@components/project/ProjectSelector"; import { setMapWorkspace, setNetworkName } from "@config/config"; type IUser = { id: number; name: string; avatar: string; }; export const Header: React.FC = ({ sticky = true, }) => { const { mode, setMode } = useContext(ColorModeContext); const { mutate: logout } = useLogout(); const [anchorEl, setAnchorEl] = useState(null); const [showProjectSelector, setShowProjectSelector] = useState(false); const open = Boolean(anchorEl); const { data: user } = useGetIdentity(); const handleMenuOpen = (event: React.MouseEvent) => { setAnchorEl(event.currentTarget); }; const handleMenuClose = () => { setAnchorEl(null); }; const handleSwitchProjectClick = () => { handleMenuClose(); setShowProjectSelector(true); }; const handleProjectSelect = (workspace: string, networkName: string) => { setMapWorkspace(workspace); setNetworkName(networkName); localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", workspace); localStorage.setItem("NEXT_PUBLIC_NETWORK_NAME", networkName); setShowProjectSelector(false); window.location.reload(); }; return ( { setMode(); }} > {mode === "dark" ? : } {(user?.avatar || user?.name) && ( <> {user?.name && ( {user?.name} )} 切换项目 logout()}> 登出 setShowProjectSelector(false)} /> )} ); };