ChatInfoOptions.jsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { Divider, IconButton, Menu, MenuItem } from "@mui/material";
  2. import MoreVertIcon from '@mui/icons-material/MoreVert';
  3. import EditIcon from '@mui/icons-material/Edit';
  4. import { useState } from "react";
  5. import AddUserIcon from "../ChatInfoModal/add-user.png";
  6. import { connect } from "react-redux";
  7. import Exit from "./icons8_exit.png";
  8. import Basket from "./icons8_basket.svg";
  9. import { actionUpsertUser } from "../../actions/actionsForUser";
  10. import { actionUpdateChat } from "../../actions/actionsForChats";
  11. import { actionOpenModal } from "../../actions/actionsForModal";
  12. const ChatInfoOptions = ({setIsOpenSearch, setOpen, leaveChat, chatId, isOwner, deleteChat}) => {
  13. const ImgStyle = {
  14. height: "20px",
  15. marginRight: "20px"
  16. }
  17. const [anchorEl, setAnchorEl] = useState(null);
  18. const open = Boolean(anchorEl);
  19. const handleClick = (event) => {
  20. setAnchorEl(event.currentTarget);
  21. };
  22. const handleClose = () => {
  23. setAnchorEl(null);
  24. };
  25. return(
  26. <div>
  27. <IconButton onClick={handleClick}>
  28. <MoreVertIcon />
  29. </IconButton>
  30. <Menu
  31. id="demo-positioned-menu"
  32. aria-labelledby="demo-positioned-button"
  33. anchorEl={anchorEl}
  34. open={open}
  35. onClose={handleClose}
  36. anchorOrigin={{
  37. vertical: 'bottom',
  38. horizontal: 'center',
  39. }}
  40. transformOrigin={{
  41. vertical: 'top',
  42. horizontal: 'center',
  43. }}
  44. >
  45. {isOwner && <div>
  46. <MenuItem onClick={() => {handleClose(); setOpen('chatEditorModal') }} disableRipple>
  47. <EditIcon sx={{mr: "20px"}}/>
  48. Edit
  49. </MenuItem>
  50. <MenuItem onClick={() => {handleClose(); setIsOpenSearch(true)}} disableRipple>
  51. <img src={AddUserIcon} style={ImgStyle}/>
  52. Add members
  53. </MenuItem>
  54. <MenuItem onClick={() => {handleClose(); deleteChat({_id: chatId, members: []})}} disableRipple>
  55. <img src={Basket} style={ImgStyle}/>
  56. Delete chat
  57. </MenuItem>
  58. <Divider sx={{margin: "0px"}}/>
  59. </div>}
  60. <MenuItem onClick={() => {handleClose(); leaveChat(null, null, null, chatId)}} disableRipple>
  61. <img src={Exit} alt="exit" style={ImgStyle}/>
  62. Leave chat
  63. </MenuItem>
  64. </Menu>
  65. </div>
  66. )
  67. }
  68. export default connect(null, {setOpen: actionOpenModal, leaveChat: actionUpsertUser, deleteChat: actionUpdateChat})(ChatInfoOptions);