import React, { useState, useCallback } from 'react'; import { LogoutOutlined, SettingOutlined, UserOutlined, EditOutlined } from '@ant-design/icons'; import { Avatar, Menu, Spin } from 'antd'; import { history } from 'umi'; import { stringify } from 'querystring'; import HeaderDropdown from '../HeaderDropdown'; import styles from './index.less'; import type { MenuInfo } from 'rc-menu/lib/interface'; import RoutePath from '@/routes/routePath'; import { CACHE_TOKEN } from '@/constants/cacheKey'; import ModifyPasswordModal from '@/components/ModifyPassword/ModifyPasswordModal'; export type GlobalHeaderRightProps = { menu?: boolean; }; /** * 退出登录,并且将当前的 url 保存 */ const loginOut = async () => { const { query = {}, search, pathname } = history.location; const { redirect } = query; // Note: There may be security issues, please note if (window.location.pathname !== RoutePath.LOGIN && !redirect) { localStorage.removeItem(CACHE_TOKEN); history.replace({ pathname: RoutePath.LOGIN, search: stringify({ redirect: pathname + search, }), }); } }; const AvatarDropdown: React.FC = ({ menu }) => { const [isModalVisible, setIsModalVisible] = useState(false); const modifyPassword = async () => { setIsModalVisible(true); }; const onMenuClick = useCallback((event: MenuInfo) => { const { key } = event; if (key === 'modify') { modifyPassword(); return; } if (key === 'logout') { loginOut(); return; } history.push(`/account/${key}`); }, []); const loading = ( ); const currentUser = { avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', name: 'admin', }; if (!currentUser || !currentUser.name) { return loading; } const menuHeaderDropdown = ( {menu && ( 个人中心 )} {menu && ( 个人设置 )} {menu && } 修改密码 退出登录 ); return (
{currentUser.name}
); }; export default AvatarDropdown;