MessageOptions.jsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { Menu, MenuItem } from '@mui/material';
  2. import ReplyIcon from "./icons8-reply.png";
  3. import ForwardIcon from "./icons8-forward.png";
  4. import { ImgIcon } from './MessageOptions.style';
  5. import EditIcon from '@mui/icons-material/Edit';
  6. import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
  7. import { connect } from 'react-redux';
  8. import { actionEditMessage } from '../../actions/actionsMessages';
  9. import { memo } from 'react';
  10. import { actionModalDraft, actionOpenModal } from '../../actions/actionsForModal';
  11. import { actionAddDraftMessage } from '../../actions/actionsForChats';
  12. const MessageOptions = ({userId, addDraftMessageEditor, handleClose, addMessageId, open, anchorEl, chatId, message, addDraftMessage, openModal}) => {
  13. const isOwner = userId === message.owner?._id;
  14. return(
  15. <Menu
  16. id="demo-positioned-menu"
  17. aria-labelledby="demo-positioned-button"
  18. anchorEl={anchorEl}
  19. open={open}
  20. onClose={handleClose}
  21. anchorOrigin={{
  22. vertical: 'bottom',
  23. horizontal: 'center',
  24. }}
  25. transformOrigin={{
  26. vertical: 'top',
  27. horizontal: 'center',
  28. }}
  29. >
  30. <MenuItem onClick={() => {handleClose(); addDraftMessage(chatId, {reply: message})}} disableRipple>
  31. <ImgIcon src={ReplyIcon} />
  32. Reply
  33. </MenuItem>
  34. {isOwner && <MenuItem onClick={() => {handleClose(); addDraftMessageEditor(chatId, message)}} disableRipple>
  35. <EditIcon style={{height: '18px', width: '18px', marginRight: '18px'}}/>
  36. Edit
  37. </MenuItem>}
  38. <MenuItem onClick={() => {addMessageId(message, 'forwardedMessage'); openModal('searchChatModal'); handleClose()}} disableRipple>
  39. <ImgIcon src={ForwardIcon} />
  40. Forward
  41. </MenuItem>
  42. <MenuItem onClick={() => {handleClose()}} disableRipple>
  43. <DeleteOutlineIcon style={{height: '18px', width: '18px', marginRight: '18px'}}/>
  44. Delete
  45. </MenuItem>
  46. </Menu>
  47. )
  48. }
  49. export default connect(state => ({userId: state?.auth?.payload?.sub?.id}), {addDraftMessage: actionAddDraftMessage, addDraftMessageEditor: actionEditMessage, openModal: actionOpenModal, addMessageId: actionModalDraft})(memo(MessageOptions))