From 2196232d20492f936ec500e410acc7211eeecfc1 Mon Sep 17 00:00:00 2001 From: AhmedHamed3699 Date: Sat, 21 Dec 2024 22:35:23 +0200 Subject: [PATCH] fix: changed mention regex --- src/services/chatService.ts | 31 +++++++++++++++++-------------- src/sockets/messages.ts | 9 +++++---- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/services/chatService.ts b/src/services/chatService.ts index f3405f7..a220abe 100644 --- a/src/services/chatService.ts +++ b/src/services/chatService.ts @@ -25,23 +25,26 @@ export const getLastMessage = async (chats: any) => { return lastMessages; }; -export const getUnreadMessages = async (chats: any, user: any) => - Promise.all( - chats.map(async (chat: any) => ({ - chatId: chat.chat._id, - unreadMessagesCount: await Message.countDocuments({ +export const getUnreadMessages = async (chats: any, user: any) => { + const mentionRegex = /@[[^]]+](([^)]+))/g; + return Promise.all( + chats.map(async (chat: any) => { + const unreadMessages = await Message.find({ chatId: chat.chat._id, + senderId: { $ne: user._id }, readBy: { $nin: [user._id] }, - }), - isMentioned: - (await Message.exists({ - chatId: chat.chat._id, - readBy: { $nin: [user._id] }, - senderId: { $ne: user._id }, - content: new RegExp(`@${user.username}`, 'i'), - })) !== null, - })) + }); + return { + chatId: chat.chat._id, + unreadMessagesCount: unreadMessages.length, + isMentioned: + unreadMessages.filter((message: any) => + mentionRegex.test(message.content) + ).length > 0, + }; + }) ); +}; export const getChats = async ( userId: mongoose.Types.ObjectId, diff --git a/src/sockets/messages.ts b/src/sockets/messages.ts index bab859d..dce8126 100644 --- a/src/sockets/messages.ts +++ b/src/sockets/messages.ts @@ -107,11 +107,12 @@ const handleMessaging = async ( ); } }); - const res = { - messageId: message._id, - }; enableDestruction(socket, message, chatId); - ack({ success: true, message: 'Message sent successfully', res }); + ack({ + success: true, + message: 'Message sent successfully', + data: message, + }); }; const handleEditMessage = async (socket: Socket, data: any, ack: Function) => {