import React, {useContext, useState} from 'react'; import {Link, useNavigate} from 'react-router-dom'; import {UserContext} from '../context/User'; import {Button, Container, Icon, Menu, Segment} from 'semantic-ui-react'; import {API, getLogo, getSystemName, isAdmin, isMobile, showSuccess} from '../helpers'; import '../index.css'; import { IconAt, IconHistogram, IconGift, IconKey, IconUser, IconLayers, IconHelpCircle, IconCreditCard, IconSemiLogo, IconHome, IconImage } from '@douyinfe/semi-icons'; import {Nav, Avatar, Dropdown, Layout, Switch} from '@douyinfe/semi-ui'; import {stringToColor} from "../helpers/render"; // HeaderBar Buttons let headerButtons = [ { text: '关于', itemKey: 'about', to: '/about', icon: }, ]; if (localStorage.getItem('chat_link')) { headerButtons.splice(1, 0, { name: '聊天', to: '/chat', icon: 'comments' }); } const HeaderBar = () => { const [userState, userDispatch] = useContext(UserContext); let navigate = useNavigate(); const [showSidebar, setShowSidebar] = useState(false); const systemName = getSystemName(); const logo = getLogo(); async function logout() { setShowSidebar(false); await API.get('/api/user/logout'); showSuccess('注销成功!'); userDispatch({type: 'logout'}); localStorage.removeItem('user'); navigate('/login'); } const toggleSidebar = () => { setShowSidebar(!showSidebar); }; const renderButtons = (isMobile) => { return headerButtons.map((button) => { if (button.admin && !isAdmin()) return <>; if (isMobile) { return ( { navigate(button.to); setShowSidebar(false); }} > {button.name} ); } return ( {button.name} ); }); }; if (isMobile()) { return ( <> logo
{systemName}
{showSidebar ? ( {renderButtons(true)} {userState.user ? ( ) : ( <> )} ) : ( <> )} ); } const switchMode = (model) => { const body = document.body; if (!model) { body.removeAttribute('theme-mode'); } else { body.setAttribute('theme-mode', 'dark'); } }; return ( <>
); }; export default HeaderBar;