import { useIntl } from "react-intl"; import { useEffect, useState } from "react"; import { Link, useNavigate } from "react-router"; import { Tooltip, Typography } from "antd"; import { Avatar } from "antd"; import { Popover } from "antd"; import { ProCard } from "@ant-design/pro-components"; import { UserOutlined, HomeOutlined, LogoutOutlined, SettingOutlined, } from "@ant-design/icons"; import { useAppSelector } from "../../hooks"; import { currentUser as _currentUser } from "../../reducers/current-user"; import type { TooltipPlacement } from "antd/lib/tooltip" import SettingModal from "./setting/SettingModal"; import LoginButton from "./LoginButton"; const { Title } = Typography; interface IWidget { placement?: TooltipPlacement; style?: React.CSSProperties; } const AvatarWidget = ({ style, placement = "bottomRight" }: IWidget) => { const intl = useIntl(); const navigate = useNavigate(); const [userName, setUserName] = useState(); const [nickName, setNickName] = useState(); const user = useAppSelector(_currentUser); useEffect(() => { setUserName(user?.realName); setNickName(user?.nickName); }, [user]); const UserCard = () => { return ( } /> , , { sessionStorage.removeItem("token"); localStorage.removeItem("token"); navigate("/anonymous/users/sign-in"); }} /> , ]} >
{nickName}
{intl.formatMessage({ id: "buttons.welcome", })}
); }; return ( <> : } placement={placement} > } src={user?.avatar} size="small" > {user ? nickName?.slice(0, 1) : undefined} ); }; export default AvatarWidget;