From f41970cfe4f835990306c569bc937bb572ecd676 Mon Sep 17 00:00:00 2001 From: Smriti Doneria Date: Sat, 8 Feb 2025 18:50:34 +0530 Subject: [PATCH 1/2] thread message --- packages/react/src/views/Message/Message.js | 46 ++++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/packages/react/src/views/Message/Message.js b/packages/react/src/views/Message/Message.js index dd8cf8d09d..5f83798706 100644 --- a/packages/react/src/views/Message/Message.js +++ b/packages/react/src/views/Message/Message.js @@ -13,7 +13,12 @@ import { import { Attachments } from '../AttachmentHandler'; import { Markdown } from '../Markdown'; import MessageHeader from './MessageHeader'; -import { useMessageStore, useUserStore, useSidebarStore } from '../../store'; +import { + useMessageStore, + useUserStore, + useSidebarStore, + useChannelStore, +} from '../../store'; import RCContext from '../../context/RCInstance'; import { MessageBody } from './MessageBody'; import { MessageReactions } from './MessageReactions'; @@ -58,6 +63,7 @@ const Message = ({ const pinPermissions = useUserStore( (state) => state.userPinPermissions.roles ); + const editMessagePermissions = useMessageStore( (state) => state.editMessagePermissions.roles ); @@ -72,8 +78,26 @@ const Message = ({ editMessage: state.editMessage, setEditMessage: state.setEditMessage, })); + const setThreadMessages = useMessageStore((state) => state.setThreadMessages); + const isChannelPrivate = useChannelStore((state) => state.isChannelPrivate); const isMe = message.u._id === authenticatedUserId; + const getThreadMessages = async (msgId, callback) => { + if (msgId) { + try { + const { messages } = await RCInstance.getThreadMessages( + msgId, + isChannelPrivate + ); + setThreadMessages(messages); + setTimeout(() => { + callback?.(messages); + }, 0); + } catch (e) { + console.error(e); + } + } + }; const theme = useTheme(); const { mode } = useTheme(); @@ -94,7 +118,6 @@ const Message = ({ const bubbleStyles = useBubbleStyles(isMe); const pinRoles = new Set(pinPermissions); const editMessageRoles = new Set(editMessagePermissions); - const variantStyles = !isInSidebar && variantOverrides === 'bubble' ? bubbleStyles : {}; @@ -116,6 +139,19 @@ const Message = ({ } getStarredMessages(); }; + const deleteThreadMessages = async (messagesToDelete) => { + for (const msg of messagesToDelete) { + try { + await RCInstance.deleteMessage(msg._id); + } catch (error) { + console.error(`Failed to delete message ${msg._id}:`, error); + dispatchToastMessage({ + type: 'error', + message: `Failed to delete message ${msg._id}`, + }); + } + } + }; const handlePinMessage = async (msg) => { const isPinned = msg.pinned; @@ -188,6 +224,12 @@ const Message = ({ type: 'success', message: 'Message deleted successfully', }); + + getThreadMessages(msg._id, async (threadMsgs) => { + if (threadMsgs.length > 0) { + await deleteThreadMessages(threadMsgs); + } + }); } else { dispatchToastMessage({ type: 'error', From fdd540503ebb854536aa912c640a9ea1407b3bfb Mon Sep 17 00:00:00 2001 From: Smriti Doneria Date: Sun, 9 Feb 2025 14:48:09 +0530 Subject: [PATCH 2/2] fixed lint error --- packages/react/src/views/Message/Message.js | 22 +++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/react/src/views/Message/Message.js b/packages/react/src/views/Message/Message.js index 5f83798706..8b6606a790 100644 --- a/packages/react/src/views/Message/Message.js +++ b/packages/react/src/views/Message/Message.js @@ -140,16 +140,18 @@ const Message = ({ getStarredMessages(); }; const deleteThreadMessages = async (messagesToDelete) => { - for (const msg of messagesToDelete) { - try { - await RCInstance.deleteMessage(msg._id); - } catch (error) { - console.error(`Failed to delete message ${msg._id}:`, error); - dispatchToastMessage({ - type: 'error', - message: `Failed to delete message ${msg._id}`, - }); - } + try { + await Promise.all( + messagesToDelete.map(async (msg) => { + await RCInstance.deleteMessage(msg._id); + }) + ); + } catch (error) { + console.error('Failed to delete messages:', error); + dispatchToastMessage({ + type: 'error', + message: 'Failed to delete messages', + }); } };