UserMenu.jsx 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { Accordion, AccordionDetails, AccordionSummary, Avatar, Button, Divider, Drawer, IconButton, List, ListItem, ListItemAvatar, Paper, Typography } from '@mui/material';
  2. import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
  3. import { connect } from 'react-redux';
  4. import { Box } from '@mui/system';
  5. import { backendURL, gql } from '../../helpers/gql';
  6. import { actionPromise } from '../../actions/actionsPromise';
  7. import React from 'react';
  8. import {useDropzone} from 'react-dropzone';
  9. import { useEffect} from 'react';
  10. import { uploadFile } from '../../helpers/uploadFile';
  11. import DropZoneAvatar from '../DropZone/DropZoneAvatar';
  12. import { actionAuthLogout } from '../../actions/actionLogin';
  13. import { store } from '../../App';
  14. import NewChatButton from '../NewChatButton';
  15. import { actionSetUserAvatar } from '../../actions/actionsMedia';
  16. import { ListItemWrap, StyledSpan, UserMenuHeader, UserMenuTitle } from './UserMenu.style';
  17. import ChatIcon from "./icons8-chat.png";
  18. import { actionOpenModal } from '../../reducers/modalReducer';
  19. import Exit from "../ChatInfoOptions/icons8_exit.png";
  20. import EditIcon from '@mui/icons-material/Edit';
  21. // const actionUploadFiles = (files) =>
  22. // actionPromise('filesUpload', Promise.all(files.map((file) => uploadFile(file))))
  23. const UserMenu = ({open, setOpen, closeUserMenu, userInfo: {nick, avatar} }) => {
  24. return (
  25. <Drawer
  26. anchor='left'
  27. open={open}
  28. onClose={closeUserMenu}
  29. >
  30. <div style={{width: "300px"}}>
  31. <UserMenuHeader>
  32. <Avatar
  33. src={`${backendURL}/${avatar?.url || ''}`}
  34. alt={nick}
  35. sx={{width: 60, height: 60}}
  36. />
  37. <UserMenuTitle>
  38. {nick}
  39. </UserMenuTitle>
  40. </UserMenuHeader>
  41. <Divider/>
  42. <List>
  43. <ListItemWrap onClick={() => setOpen('createChatModal')}>
  44. <img src={ChatIcon} alt="chatIcon" style={{height: "22px"}}/> <StyledSpan>New chat</StyledSpan>
  45. </ListItemWrap>
  46. <ListItemWrap onClick={() => setOpen('userEditorModal')}>
  47. <EditIcon/> <StyledSpan>Edit profile</StyledSpan>
  48. </ListItemWrap>
  49. <ListItemWrap onClick={() => store.dispatch(actionAuthLogout())}>
  50. <img src={Exit} alt="chatIcon" style={{height: "22px"}}/> <StyledSpan>Log out</StyledSpan>
  51. </ListItemWrap>
  52. </List>
  53. </div>
  54. </Drawer>
  55. )
  56. }
  57. export default connect(state => ({userInfo: state.promise?.aboutMe?.payload || {}}), {setOpen : actionOpenModal})(UserMenu)