diff --git a/backend/src/controllers/MessageController.ts b/backend/src/controllers/MessageController.ts index fd2091d..a381676 100644 --- a/backend/src/controllers/MessageController.ts +++ b/backend/src/controllers/MessageController.ts @@ -42,6 +42,8 @@ export const store = async (req: Request, res: Response): Promise => { const ticket = await ShowTicketService(ticketId); + await SetTicketMessagesAsRead(ticket); + if (medias) { await Promise.all( medias.map(async (media: Express.Multer.File) => { @@ -52,8 +54,6 @@ export const store = async (req: Request, res: Response): Promise => { await SendWhatsAppMessage({ body, ticket, quotedMsg }); } - await SetTicketMessagesAsRead(ticket); - return res.send(); }; diff --git a/backend/src/helpers/SetTicketMessagesAsRead.ts b/backend/src/helpers/SetTicketMessagesAsRead.ts index 6a43f22..5350c81 100644 --- a/backend/src/helpers/SetTicketMessagesAsRead.ts +++ b/backend/src/helpers/SetTicketMessagesAsRead.ts @@ -19,7 +19,9 @@ const SetTicketMessagesAsRead = async (ticket: Ticket): Promise => { try { const wbot = await GetTicketWbot(ticket); - wbot.sendSeen(`${ticket.contact.number}@${ticket.isGroup ? "g" : "c"}.us`); + await wbot.sendSeen( + `${ticket.contact.number}@${ticket.isGroup ? "g" : "c"}.us` + ); } catch (err) { logger.warn( `Could not mark messages as read. Maybe whatsapp session disconnected? Err: ${err}` diff --git a/backend/src/services/TicketServices/FindOrCreateTicketService.ts b/backend/src/services/TicketServices/FindOrCreateTicketService.ts index b1b2abe..9d0ba89 100644 --- a/backend/src/services/TicketServices/FindOrCreateTicketService.ts +++ b/backend/src/services/TicketServices/FindOrCreateTicketService.ts @@ -21,10 +21,12 @@ const FindOrCreateTicketService = async ( }); if (ticket) { - ticket.update({ unreadMessages }); + await ticket.update({ unreadMessages }); + + return ticket; } - if (!ticket && groupContact) { + if (groupContact) { ticket = await Ticket.findOne({ where: { contactId: groupContact.id @@ -39,10 +41,10 @@ const FindOrCreateTicketService = async ( userId: null, unreadMessages }); - } - } - if (!ticket && !groupContact) { + return ticket; + } + } else { ticket = await Ticket.findOne({ where: { updatedAt: { @@ -60,20 +62,20 @@ const FindOrCreateTicketService = async ( userId: null, unreadMessages }); + + return ticket; } } - if (!ticket) { - const { id } = await Ticket.create({ - contactId: groupContact ? groupContact.id : contact.id, - status: "pending", - isGroup: !!groupContact, - unreadMessages, - whatsappId - }); + const { id } = await Ticket.create({ + contactId: groupContact ? groupContact.id : contact.id, + status: "pending", + isGroup: !!groupContact, + unreadMessages, + whatsappId + }); - ticket = await ShowTicketService(id); - } + ticket = await ShowTicketService(id); return ticket; };