File size: 1,406 Bytes
aa396c5
04aba1b
6b8fc2c
503735c
04aba1b
 
 
6b8fc2c
 
04aba1b
aa396c5
04aba1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aa396c5
 
 
6b8fc2c
04aba1b
503735c
 
 
aa396c5
 
 
 
503735c
 
04aba1b
 
6b8fc2c
04aba1b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { useFetchUserInfo, useSelectUserInfo } from '@/hooks/userSettingHook';
import authorizationUtil from '@/utils/authorizationUtil';
import type { MenuProps } from 'antd';
import { Avatar, Button, Dropdown } from 'antd';
import React, { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { history } from 'umi';

const App: React.FC = () => {
  const { t } = useTranslation();
  const userInfo = useSelectUserInfo();

  const logout = () => {
    authorizationUtil.removeAll();
    history.push('/login');
  };

  const toSetting = () => {
    history.push('/setting');
  };

  const items: MenuProps['items'] = useMemo(() => {
    return [
      {
        key: '1',
        label: (
          <Button type="text" onClick={logout}>

            {t('header.logout')}

          </Button>
        ),
      },
      {
        key: '2',
        label: (
          <Button type="text" onClick={toSetting}>

            {t('header.setting')}

          </Button>
        ),
      },
    ];
  }, [t]);

  useFetchUserInfo();

  return (
    <Dropdown menu={{ items }} placement="bottomLeft" arrow>

      <Avatar

        size={32}

        src={

          userInfo.avatar ??

          'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'

        }

      />

    </Dropdown>
  );
};

export default App;