diff --git a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMessagesQuery.ts b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMessagesQuery.ts index 4a6e1e7a2202b..5966aa17cad4f 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMessagesQuery.ts +++ b/apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadMessagesQuery.ts @@ -1,11 +1,10 @@ import { isThreadMessage, type IMessage, type IRoom, type IThreadMainMessage, type IThreadMessage } from '@rocket.chat/core-typings'; -import { useEndpoint, useMethod, useStream } from '@rocket.chat/ui-contexts'; +import { useMethod, useStream } from '@rocket.chat/ui-contexts'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { useEffect, useRef } from 'react'; import { onClientMessageReceived } from '../../../../../lib/onClientMessageReceived'; import { roomsQueryKeys } from '../../../../../lib/queryKeys'; -import { mapMessageFromApi } from '../../../../../lib/utils/mapMessageFromApi'; import { modifyMessageOnFilesDelete } from '../../../../../lib/utils/modifyMessageOnFilesDelete'; import { createDeleteCriteria, @@ -25,11 +24,7 @@ export const useThreadMessagesQuery = (tmid: IThreadMainMessage['_id'], rid?: IR const queryClient = useQueryClient(); const queryKey = roomsQueryKeys.threadMessages(roomId, tmid); - const getThreadMessages = useEndpoint('GET', '/v1/chat.getThreadMessages'); - // REST has no per-thread read-marker endpoint yet; fall back to the - // `readThreads` DDP method so the side effect that DDP getThreadMessages - // used to do server-side keeps happening for callers. - const readThreads = useMethod('readThreads'); + const getThreadMessages = useMethod('getThreadMessages'); const subscribeToRoomMessages = useStream('room-messages'); const subscribeToNotifyRoom = useStream('notify-room'); @@ -110,11 +105,10 @@ export const useThreadMessagesQuery = (tmid: IThreadMainMessage['_id'], rid?: IR queryFn: async () => { const cachedMessages = queryClient.getQueryData(queryKey) || []; - const { messages } = await getThreadMessages({ tmid }); - void Promise.resolve(readThreads(tmid)).catch(() => undefined); - const filtered = messages - .map((m) => mapMessageFromApi(m)) - .filter((msg): msg is IThreadMessage => isThreadMessage(msg) && msg.tmid === tmid && msg._id !== tmid && msg._hidden !== true); + const messages = await getThreadMessages({ tmid }); + const filtered = messages.filter( + (msg): msg is IThreadMessage => isThreadMessage(msg) && msg.tmid === tmid && msg._id !== tmid && msg._hidden !== true, + ); const sorted = mergeThreadMessages(cachedMessages, filtered); if (unprocessedReadMessagesEvent.current) { diff --git a/ee/packages/media-calls/src/sip/providers/OutgoingSipCall.ts b/ee/packages/media-calls/src/sip/providers/OutgoingSipCall.ts index 15fbd27d40910..48927f81f9c34 100644 --- a/ee/packages/media-calls/src/sip/providers/OutgoingSipCall.ts +++ b/ee/packages/media-calls/src/sip/providers/OutgoingSipCall.ts @@ -46,7 +46,7 @@ export class OutgoingSipCall extends BaseSipCall { public static async createCall(session: SipServerSession, params: InternalCallParams): Promise { logger.debug({ msg: 'OutgoingSipCall.createCall', sessionId: session.sessionId }); - const { callee, ...extraParams } = params; + const { callee, features: requestedFeatures, ...extraParams } = params; // pre-sign the callee to this session const signedCallee: MediaCallSignedContact = { @@ -68,12 +68,13 @@ export class OutgoingSipCall extends BaseSipCall { throw new SipError(SipErrorCodes.NOT_FOUND, 'Caller agent not found'); } + const features = requestedFeatures.filter((feature) => SIP_CALL_FEATURES.includes(feature)); const call = await mediaCallDirector.createCall({ ...extraParams, callee: signedCallee, calleeAgent, callerAgent, - features: SIP_CALL_FEATURES, + features, }); const channel = await calleeAgent.getOrCreateChannel(call, session.sessionId);