diff --git a/apps/meteor/client/components/message/ToolboxHolder.tsx b/apps/meteor/client/components/message/ToolboxHolder.tsx index a7dd6e82e6b1..97e3f1acb4aa 100644 --- a/apps/meteor/client/components/message/ToolboxHolder.tsx +++ b/apps/meteor/client/components/message/ToolboxHolder.tsx @@ -1,4 +1,4 @@ -import type { IMessage } from '@rocket.chat/core-typings'; +import type { IMessage, ToolboxMessageType } from '@rocket.chat/core-typings'; import { MessageToolboxWrapper } from '@rocket.chat/fuselage'; import type { ReactElement } from 'react'; import React, { memo, useRef } from 'react'; @@ -8,14 +8,15 @@ import Toolbox from './toolbox/Toolbox'; type ToolboxHolderProps = { message: IMessage; + context?: ToolboxMessageType; }; -export const ToolboxHolder = (props: ToolboxHolderProps): ReactElement => { +export const ToolboxHolder = ({ message, context }: ToolboxHolderProps): ReactElement => { const ref = useRef(null); const [visible] = useIsVisible(ref); - return {visible && }; + return {visible && }; }; export default memo(ToolboxHolder); diff --git a/apps/meteor/client/components/message/toolbox/Toolbox.tsx b/apps/meteor/client/components/message/toolbox/Toolbox.tsx index cf6ea04b157f..78f37e842e95 100644 --- a/apps/meteor/client/components/message/toolbox/Toolbox.tsx +++ b/apps/meteor/client/components/message/toolbox/Toolbox.tsx @@ -1,4 +1,4 @@ -import type { IMessage, IUser, IRoom, ITranslatedMessage } from '@rocket.chat/core-typings'; +import type { IMessage, IUser, IRoom, ITranslatedMessage, ToolboxMessageType } from '@rocket.chat/core-typings'; import { isThreadMessage, isRoomFederated } from '@rocket.chat/core-typings'; import { MessageToolbox, MessageToolboxItem } from '@rocket.chat/fuselage'; import { useUser, useUserSubscription, useSettings, useTranslation } from '@rocket.chat/ui-contexts'; @@ -15,14 +15,14 @@ import { useRoom } from '../../../views/room/contexts/RoomContext'; import { useToolboxContext } from '../../../views/room/contexts/ToolboxContext'; import MessageActionMenu from './MessageActionMenu'; -const getMessageContext = (message: IMessage, room: IRoom): MessageActionContext => { +const getMessageContext = (message: IMessage, room: IRoom, context?: ToolboxMessageType): MessageActionContext => { if (message.t === 'videoconf') { return 'videoconf'; } if (isRoomFederated(room)) { return 'federated'; } - if (isThreadMessage(message)) { + if (isThreadMessage(message) || context === 'thread') { return 'threads'; } return 'message'; @@ -30,9 +30,10 @@ const getMessageContext = (message: IMessage, room: IRoom): MessageActionContext type ToolboxProps = { message: IMessage & Partial; + messageContext?: ToolboxMessageType; }; -const Toolbox = ({ message }: ToolboxProps): ReactElement | null => { +const Toolbox = ({ message, messageContext }: ToolboxProps): ReactElement | null => { const t = useTranslation(); const room = useRoom(); @@ -41,7 +42,7 @@ const Toolbox = ({ message }: ToolboxProps): ReactElement | null => { const settings = useSettings(); const user = useUser() as IUser; - const context = getMessageContext(message, room); + const context = getMessageContext(message, room, messageContext); const mapSettings = useMemo(() => Object.fromEntries(settings.map((setting) => [setting._id, setting.value])), [settings]); diff --git a/apps/meteor/client/components/message/variants/ThreadMessage.tsx b/apps/meteor/client/components/message/variants/ThreadMessage.tsx index 4c364098c8be..d442db1b850d 100644 --- a/apps/meteor/client/components/message/variants/ThreadMessage.tsx +++ b/apps/meteor/client/components/message/variants/ThreadMessage.tsx @@ -87,7 +87,7 @@ const ThreadMessage = ({ message, sequential, unread }: ThreadMessageProps): Rea {ignored ? : } - {!message.private && } + {!message.private && } ); }; diff --git a/packages/core-typings/src/IMessage/IMessage.ts b/packages/core-typings/src/IMessage/IMessage.ts index 89073ac0b876..e9fffaa5e81e 100644 --- a/packages/core-typings/src/IMessage/IMessage.ts +++ b/packages/core-typings/src/IMessage/IMessage.ts @@ -186,6 +186,8 @@ export interface IMessage extends IRocketChatRecord { }; } +export type ToolboxMessageType = 'message' | 'thread' | 'federated'; + export type MessageSystem = { t: 'system'; };