import React, { useContext, useState } from "react"; import { useHistory } from "react-router-dom"; import { makeStyles } from "@material-ui/core/styles"; import { IconButton } from "@material-ui/core"; import { MoreVert, Replay } from "@material-ui/icons"; import { i18n } from "../../translate/i18n"; import api from "../../services/api"; import TicketOptionsMenu from "../TicketOptionsMenu"; import ButtonWithSpinner from "../ButtonWithSpinner"; import toastError from "../../errors/toastError"; import { AuthContext } from "../../context/Auth/AuthContext"; import Modal from "../ChatEnd/ModalChatEnd"; import { render } from '@testing-library/react'; import { TabTicketContext } from "../../context/TabTicketHeaderOption/TabTicketHeaderOption"; const useStyles = makeStyles(theme => ({ actionButtons: { marginRight: 6, flex: "none", alignSelf: "center", marginLeft: "auto", "& > *": { margin: theme.spacing(1), }, }, })); const TicketActionButtons = ({ ticket, statusChatEnd }) => { const classes = useStyles(); const history = useHistory(); const [anchorEl, setAnchorEl] = useState(null); const [loading, setLoading] = useState(false); const [useDialogflow, setUseDialogflow] = useState(ticket.contact.useDialogflow); const ticketOptionsMenuOpen = Boolean(anchorEl); const { user } = useContext(AuthContext); const { tabOption, setTabOption } = useContext(TabTicketContext); const handleOpenTicketOptionsMenu = e => { setAnchorEl(e.currentTarget); }; const handleCloseTicketOptionsMenu = e => { setAnchorEl(null); }; const chatEndVal = (data) => { if (data) { data = { ...data, 'ticketId': ticket.id } handleUpdateTicketStatus(null, "closed", user?.id, data) } } const handleModal = (/*status, userId*/) => { render() }; const handleUpdateTicketStatus = async (e, status, userId, schedulingData = {}) => { setLoading(true); try { if (status === 'closed') { if (tabOption === 'search') { setTabOption('open') } await api.put(`/tickets/${ticket.id}`, { status: status, userId: userId || null, schedulingNotifyData: JSON.stringify(schedulingData) }); } else { if (tabOption === 'search') { setTabOption('open') } await api.put(`/tickets/${ticket.id}`, { status: status, userId: userId || null }); } setLoading(false); if (status === "open") { history.push(`/tickets/${ticket.id}`); } else { history.push("/tickets"); } } catch (err) { setLoading(false); toastError(err); } }; const handleContactToggleUseDialogflow = async () => { setLoading(true); try { const contact = await api.put(`/contacts/toggleUseDialogflow/${ticket.contact.id}`); setUseDialogflow(contact.data.useDialogflow); setLoading(false); } catch (err) { setLoading(false); toastError(err); } }; return (
{ticket.status === "closed" && ( } size="small" onClick={e => handleUpdateTicketStatus(e, "open", user?.id)} > {i18n.t("messagesList.header.buttons.reopen")} )} {ticket.status === "open" && ( <> } size="small" onClick={e => handleUpdateTicketStatus(e, "pending", null)} > {i18n.t("messagesList.header.buttons.return")} { handleModal() // handleUpdateTicketStatus(e, "closed", user?.id) }} > {i18n.t("messagesList.header.buttons.resolve")} )} {ticket.status === "pending" && ( handleUpdateTicketStatus(e, "open", user?.id)} > {i18n.t("messagesList.header.buttons.accept")} )}
); }; export default TicketActionButtons;