index.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import React, { useState, useContext } from "react";
  2. import MenuItem from "@material-ui/core/MenuItem";
  3. import { i18n } from "../../translate/i18n";
  4. import api from "../../services/api";
  5. import ConfirmationModal from "../ConfirmationModal";
  6. import { Menu } from "@material-ui/core";
  7. import { ReplyMessageContext } from "../../context/ReplyingMessage/ReplyingMessageContext";
  8. import toastError from "../../errors/toastError";
  9. const MessageOptionsMenu = ({ message, menuOpen, handleClose, anchorEl }) => {
  10. const { setReplyingMessage } = useContext(ReplyMessageContext);
  11. const [confirmationOpen, setConfirmationOpen] = useState(false);
  12. const handleDeleteMessage = async () => {
  13. try {
  14. await api.delete(`/messages/${message.id}`);
  15. } catch (err) {
  16. toastError(err);
  17. }
  18. };
  19. const hanldeReplyMessage = () => {
  20. setReplyingMessage(message);
  21. handleClose();
  22. };
  23. const handleOpenConfirmationModal = e => {
  24. setConfirmationOpen(true);
  25. handleClose();
  26. };
  27. return (
  28. <>
  29. <ConfirmationModal
  30. title={i18n.t("messageOptionsMenu.confirmationModal.title")}
  31. open={confirmationOpen}
  32. onClose={setConfirmationOpen}
  33. onConfirm={handleDeleteMessage}
  34. >
  35. {i18n.t("messageOptionsMenu.confirmationModal.message")}
  36. </ConfirmationModal>
  37. <Menu
  38. anchorEl={anchorEl}
  39. getContentAnchorEl={null}
  40. anchorOrigin={{
  41. vertical: "bottom",
  42. horizontal: "right",
  43. }}
  44. transformOrigin={{
  45. vertical: "top",
  46. horizontal: "right",
  47. }}
  48. open={menuOpen}
  49. onClose={handleClose}
  50. >
  51. {message.fromMe && (
  52. <MenuItem onClick={handleOpenConfirmationModal}>
  53. {i18n.t("messageOptionsMenu.delete")}
  54. </MenuItem>
  55. )}
  56. <MenuItem onClick={hanldeReplyMessage}>
  57. {i18n.t("messageOptionsMenu.reply")}
  58. </MenuItem>
  59. </Menu>
  60. </>
  61. );
  62. };
  63. export default MessageOptionsMenu;