From e6322353ab07f093cdb2a1d815179b11d089e40a Mon Sep 17 00:00:00 2001 From: yash-rajpal Date: Tue, 7 Feb 2023 15:58:00 +0530 Subject: [PATCH 1/3] use main thread message from collections --- .../contextualBar/Threads/components/ThreadMessageList.tsx | 2 +- .../contextualBar/Threads/hooks/useLegacyThreadMessages.ts | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx index bc38eda9e60eb..88adbe0be255c 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx +++ b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx @@ -76,7 +76,7 @@ const ThreadMessageList = ({ mainMessage, jumpTo, onJumpTo }: ThreadMessageListP ) : ( - {[mainMessage, ...messages].map((message, index, { [index - 1]: previous }) => { + {messages.map((message, index, { [index - 1]: previous }) => { const sequential = isMessageSequential(message, previous, messageGroupingPeriod); const newDay = isMessageNewDay(message, previous); const firstUnread = isMessageFirstUnread(subscription, message, previous); diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts index f96c721dbed9e..93b21bab6a6d1 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts @@ -1,5 +1,4 @@ import type { IThreadMainMessage } from '@rocket.chat/core-typings'; -import { isThreadMessage } from '@rocket.chat/core-typings'; import { useMethod } from '@rocket.chat/ui-contexts'; import { useEffect, useState, useCallback } from 'react'; @@ -14,8 +13,6 @@ export const useLegacyThreadMessages = (tmid: IThreadMainMessage['_id']) => { { $or: [{ tmid }, { _id: tmid }], _hidden: { $ne: true }, - tmid, - _id: { $ne: tmid }, }, { fields: { @@ -25,9 +22,7 @@ export const useLegacyThreadMessages = (tmid: IThreadMainMessage['_id']) => { }, sort: { ts: 1 }, }, - ) - .fetch() - .filter(isThreadMessage); + ).fetch(); }, [tmid]), ); From 625958d880c2038ee74df278b0cd64f46089001e Mon Sep 17 00:00:00 2001 From: yash-rajpal Date: Wed, 8 Feb 2023 16:02:04 +0530 Subject: [PATCH 2/3] fix types --- .../Threads/hooks/useLegacyThreadMessages.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts index 93b21bab6a6d1..fda5f1ebadb44 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts @@ -1,4 +1,4 @@ -import type { IThreadMainMessage } from '@rocket.chat/core-typings'; +import type { IThreadMessage, IThreadMainMessage } from '@rocket.chat/core-typings'; import { useMethod } from '@rocket.chat/ui-contexts'; import { useEffect, useState, useCallback } from 'react'; @@ -6,7 +6,12 @@ import { Messages } from '../../../../../../app/models/client'; import { upsertMessageBulk } from '../../../../../../app/ui-utils/client/lib/RoomHistoryManager'; import { useReactiveValue } from '../../../../../hooks/useReactiveValue'; -export const useLegacyThreadMessages = (tmid: IThreadMainMessage['_id']) => { +export const useLegacyThreadMessages = ( + tmid: IThreadMainMessage['_id'], +): { + messages: Array; + loading: boolean; +} => { const messages = useReactiveValue( useCallback(() => { return Messages.find( @@ -22,7 +27,7 @@ export const useLegacyThreadMessages = (tmid: IThreadMainMessage['_id']) => { }, sort: { ts: 1 }, }, - ).fetch(); + ).fetch() as Array; }, [tmid]), ); From 2e49604fcc3ada8142bed23f0193808197aca1cf Mon Sep 17 00:00:00 2001 From: yash-rajpal Date: Thu, 2 Mar 2023 01:28:53 +0530 Subject: [PATCH 3/3] use main messasge from useQuery --- .../contextualBar/Threads/components/ThreadMessageList.tsx | 2 +- .../contextualBar/Threads/hooks/useLegacyThreadMessages.ts | 7 ++++++- .../Threads/hooks/useThreadMainMessageQuery.ts | 5 ++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx index 6eea6942f9889..4662c1d7704b0 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx +++ b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx @@ -75,7 +75,7 @@ const ThreadMessageList = ({ mainMessage }: ThreadMessageListProps): ReactElemen ) : ( - {messages.map((message, index, { [index - 1]: previous }) => { + {[mainMessage, ...messages].map((message, index, { [index - 1]: previous }) => { const sequential = isMessageSequential(message, previous, messageGroupingPeriod); const newDay = isMessageNewDay(message, previous); const firstUnread = isMessageFirstUnread(subscription, message, previous); diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts index fda5f1ebadb44..6545d85de16c2 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useLegacyThreadMessages.ts @@ -1,4 +1,5 @@ import type { IThreadMessage, IThreadMainMessage } from '@rocket.chat/core-typings'; +import { isThreadMessage } from '@rocket.chat/core-typings'; import { useMethod } from '@rocket.chat/ui-contexts'; import { useEffect, useState, useCallback } from 'react'; @@ -18,6 +19,8 @@ export const useLegacyThreadMessages = ( { $or: [{ tmid }, { _id: tmid }], _hidden: { $ne: true }, + tmid, + _id: { $ne: tmid }, }, { fields: { @@ -27,7 +30,9 @@ export const useLegacyThreadMessages = ( }, sort: { ts: 1 }, }, - ).fetch() as Array; + ) + .fetch() + .filter(isThreadMessage); }, [tmid]), ); diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMainMessageQuery.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMainMessageQuery.ts index 6e831ac12ebbb..5c073d4ca012a 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMainMessageQuery.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMainMessageQuery.ts @@ -7,6 +7,7 @@ import { useCallback, useEffect, useRef } from 'react'; import type { FieldExpression, Query } from '../../../../../lib/minimongo'; import { createFilterFromQuery } from '../../../../../lib/minimongo'; +import { onClientMessageReceived } from '../../../../../lib/onClientMessageReceived'; import { useRoom } from '../../../contexts/RoomContext'; import { useGetMessageByID } from './useGetMessageByID'; @@ -93,7 +94,9 @@ export const useThreadMainMessageQuery = ( }, []); return useQuery(['rooms', room._id, 'threads', tmid, 'main-message'] as const, async ({ queryKey }) => { - const mainMessage = await getMessage(tmid); + const message = await getMessage(tmid); + + const mainMessage = (await onClientMessageReceived(message)) || message; if (!mainMessage && !isThreadMainMessage(mainMessage)) { throw new Error('Invalid main message');