profileBar.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. // import { Avatar, Button, AppBar } from "@mui/material"
  2. import { connect } from "react-redux"
  3. import { actionAuthLogout } from "../actions"
  4. import { useState } from "react";
  5. import Box from '@mui/material/Box';
  6. import Avatar from '@mui/material/Avatar';
  7. import Menu from '@mui/material/Menu';
  8. import MenuItem from '@mui/material/MenuItem';
  9. import ListItemIcon from '@mui/material/ListItemIcon';
  10. import Divider from '@mui/material/Divider';
  11. import IconButton from '@mui/material/IconButton';
  12. import Typography from '@mui/material/Typography';
  13. import Tooltip from '@mui/material/Tooltip';
  14. import PersonAdd from '@mui/icons-material/PersonAdd';
  15. import Settings from '@mui/icons-material/Settings';
  16. import Logout from '@mui/icons-material/Logout';
  17. import { ListItem } from "@mui/material";
  18. import { Link } from "react-router-dom";
  19. export default function AccountMenu() {
  20. }
  21. const Profile = ({ user, onLogout }) => {
  22. const [anchorEl, setAnchorEl] = useState(null);
  23. const open = Boolean(anchorEl);
  24. const handleClick = (event) => {
  25. setAnchorEl(event.currentTarget);
  26. }
  27. const handleClose = () => {
  28. setAnchorEl(null);
  29. }
  30. return (
  31. // <>
  32. // {user && <div>
  33. // {user.avatar ?
  34. // <Avatar src={user.avatar.url} alt={user.login} />
  35. // :
  36. // <Avatar>{(user.nick && user.nick[0]) || user.login[0]}</Avatar>}
  37. // <span>{user.nick || user.login}</span>
  38. // <a href="/profile">Редактировать профиль</a>
  39. // <Button onClick={() => onLogout()}>Выйти</Button>
  40. // </div>}
  41. // </>
  42. <>
  43. <Box sx={{ display: 'flex', alignItems: 'center', textAlign: 'center' }}>
  44. {user && <Tooltip title="Account settings">
  45. <IconButton onClick={handleClick} size="small" sx={{ ml: 2 }}>
  46. {user.avatar ?
  47. <Avatar src={user.avatar.url} alt={user.login} />
  48. :
  49. <Avatar>{(user.nick && user.nick[0]) || user.login[0]}</Avatar>}
  50. </IconButton>
  51. </Tooltip>}
  52. </Box>
  53. <Menu
  54. anchorEl={anchorEl}
  55. open={open}
  56. onClose={handleClose}
  57. onClick={handleClose}
  58. PaperProps={{
  59. elevation: 0,
  60. sx: {
  61. overflow: 'visible',
  62. filter: 'drop-shadow(0px 2px 8px rgba(0,0,0,0.32))',
  63. mt: 1.5,
  64. '& .MuiAvatar-root': {
  65. width: 32,
  66. height: 32,
  67. ml: -0.5,
  68. mr: 1,
  69. },
  70. '&:before': {
  71. content: '""',
  72. display: 'block',
  73. position: 'absolute',
  74. top: 0,
  75. right: 14,
  76. width: 10,
  77. height: 10,
  78. bgcolor: 'background.paper',
  79. transform: 'translateY(-50%) rotate(45deg)',
  80. zIndex: 0,
  81. },
  82. },
  83. }}
  84. transformOrigin={{ horizontal: 'right', vertical: 'top' }}
  85. anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}
  86. >
  87. <MenuItem component={Link} to={`/profile`}>
  88. Profile </MenuItem>
  89. <Divider />
  90. <MenuItem onClick={onLogout}>
  91. <ListItemIcon>
  92. <Logout fontSize="small" />
  93. </ListItemIcon>
  94. Logout
  95. </MenuItem>
  96. </Menu>
  97. </>
  98. )
  99. }
  100. export const ConnectProfile = connect(state => ({ user: state.promise.userInfo?.payload?.data?.UserFindOne }),
  101. {
  102. onLogout: actionAuthLogout
  103. })(Profile)