diff --git a/backend/src/controllers/TicketController.ts b/backend/src/controllers/TicketController.ts index 9795df3..7cf9510 100644 --- a/backend/src/controllers/TicketController.ts +++ b/backend/src/controllers/TicketController.ts @@ -81,7 +81,7 @@ export const update = async ( }); } - io.to(ticket.status).emit("ticket", { + io.to(ticket.status).to(ticketId).emit("ticket", { action: "updateStatus", ticket }); @@ -99,7 +99,7 @@ export const remove = async ( const io = getIO(); io.to(ticket.status) - .to("notification") + .to(ticketId) .emit("ticket", { action: "delete", ticketId: +ticketId diff --git a/backend/src/services/ContactServices/UpdateContactService.ts b/backend/src/services/ContactServices/UpdateContactService.ts index 18d5bc2..cc39bc7 100644 --- a/backend/src/services/ContactServices/UpdateContactService.ts +++ b/backend/src/services/ContactServices/UpdateContactService.ts @@ -27,7 +27,7 @@ const UpdateContactService = async ({ const contact = await Contact.findOne({ where: { id: contactId }, - attributes: ["id", "name", "number", "email"], + attributes: ["id", "name", "number", "email", "profilePicUrl"], include: ["extraInfo"] }); diff --git a/backend/src/services/MessageServices/CreateMessageService.ts b/backend/src/services/MessageServices/CreateMessageService.ts index 700e07a..957ddc4 100644 --- a/backend/src/services/MessageServices/CreateMessageService.ts +++ b/backend/src/services/MessageServices/CreateMessageService.ts @@ -22,7 +22,7 @@ const CreateMessageService = async ({ const ticket = await ShowTicketService(ticketId); if (!ticket) { - throw new AppError("No ticket found with this ID"); + throw new AppError("No ticket found with this ID", 404); } const message: Message = await ticket.$create("message", messageData); diff --git a/backend/src/services/MessageServices/ListMessagesService.ts b/backend/src/services/MessageServices/ListMessagesService.ts index 5791420..4d5f694 100644 --- a/backend/src/services/MessageServices/ListMessagesService.ts +++ b/backend/src/services/MessageServices/ListMessagesService.ts @@ -1,4 +1,5 @@ import { where, fn, col } from "sequelize"; +import AppError from "../../errors/AppError"; import Message from "../../models/Message"; import Ticket from "../../models/Ticket"; import ShowTicketService from "../TicketServices/ShowTicketService"; @@ -24,7 +25,7 @@ const ListMessagesService = async ({ const ticket = await ShowTicketService(ticketId); if (!ticket) { - throw new Error("No ticket found with this ID"); + throw new AppError("No ticket found with this ID", 404); } const whereCondition = { diff --git a/backend/src/services/TicketServices/ShowTicketService.ts b/backend/src/services/TicketServices/ShowTicketService.ts index 9379aff..dff0214 100644 --- a/backend/src/services/TicketServices/ShowTicketService.ts +++ b/backend/src/services/TicketServices/ShowTicketService.ts @@ -21,7 +21,7 @@ const ShowTicketService = async (id: string | number): Promise => { }); if (!ticket) { - throw new AppError("No ticket found with this ID"); + throw new AppError("No ticket found with this ID", 404); } return ticket; diff --git a/frontend/src/components/MessagesList/index.js b/frontend/src/components/MessagesList/index.js index 00b4e55..71c1996 100644 --- a/frontend/src/components/MessagesList/index.js +++ b/frontend/src/components/MessagesList/index.js @@ -293,11 +293,13 @@ const MessagesList = () => { const { data } = await api.get("/messages/" + ticketId, { params: { pageNumber }, }); + setContact(data.ticket.contact); setTicket(data.ticket); dispatch({ type: "LOAD_MESSAGES", payload: data.messages }); setHasMore(data.hasMore); setLoading(false); + if (pageNumber === 1 && data.messages.length > 1) { scrollToBottom(); } @@ -318,7 +320,7 @@ const MessagesList = () => { useEffect(() => { const socket = openSocket(process.env.REACT_APP_BACKEND_URL); - socket.emit("joinChatBox", ticketId, () => {}); + socket.emit("joinChatBox", ticketId); socket.on("appMessage", data => { if (data.action === "create") { @@ -330,6 +332,17 @@ const MessagesList = () => { } }); + socket.on("ticket", data => { + if (data.action === "updateStatus") { + setTicket(data.ticket); + } + + if (data.action === "delete") { + toast.success("The deleted sucessfully."); + history.push("/tickets"); + } + }); + socket.on("contact", data => { if (data.action === "update") { setContact(data.contact); @@ -339,7 +352,7 @@ const MessagesList = () => { return () => { socket.disconnect(); }; - }, [ticketId]); + }, [ticketId, history]); const loadMore = () => { setPageNumber(prevPageNumber => prevPageNumber + 1); @@ -585,11 +598,12 @@ const MessagesList = () => { subheader={ loading ? ( - ) : ( - ticket.user && + ) : ticket.user ? ( `${i18n.t("messagesList.header.assignedTo")} ${ ticket.user.name }` + ) : ( + "Pending" ) } /> diff --git a/frontend/src/components/TicketOptionsMenu/index.js b/frontend/src/components/TicketOptionsMenu/index.js index fc92752..f9b0b5c 100644 --- a/frontend/src/components/TicketOptionsMenu/index.js +++ b/frontend/src/components/TicketOptionsMenu/index.js @@ -17,8 +17,6 @@ const TicketOptionsMenu = ({ ticket, menuOpen, handleClose, anchorEl }) => { const handleDeleteTicket = async () => { try { await api.delete(`/tickets/${ticket.id}`); - toast.success("Ticket deletado com sucesso."); - history.push("/tickets"); } catch (err) { toast.error("Erro ao deletar o ticket"); }