Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FIX] Unintended "Reply on thread" button showing on thread's first message #27716

Merged
merged 11 commits into from Jan 25, 2023
5 changes: 3 additions & 2 deletions apps/meteor/client/components/message/ToolboxHolder.tsx
Expand Up @@ -8,14 +8,15 @@ import Toolbox from './toolbox/Toolbox';

type ToolboxHolderProps = {
message: IMessage;
context?: 'message' | 'thread' | 'federated';
};

export const ToolboxHolder = (props: ToolboxHolderProps): ReactElement => {
export const ToolboxHolder = ({ message, context }: ToolboxHolderProps): ReactElement => {
const ref = useRef(null);

const [visible] = useIsVisible(ref);

return <MessageToolboxWrapper ref={ref}>{visible && <Toolbox {...props} />}</MessageToolboxWrapper>;
return <MessageToolboxWrapper ref={ref}>{visible && <Toolbox message={message} messageContext={context} />}</MessageToolboxWrapper>;
};

export default memo(ToolboxHolder);
12 changes: 7 additions & 5 deletions apps/meteor/client/components/message/toolbox/Toolbox.tsx
@@ -1,4 +1,4 @@
import type { IMessage, IUser, IRoom } from '@rocket.chat/core-typings';
import type { IUser, IRoom, IMessage } 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';
Expand All @@ -14,24 +14,25 @@ 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?: 'message' | 'thread' | 'federated'): MessageActionContext => {
if (message.t === 'videoconf') {
return 'videoconf';
}
if (isRoomFederated(room)) {
return 'federated';
}
if (isThreadMessage(message)) {
if (isThreadMessage(message) || (context && context === 'thread')) {
Educg550 marked this conversation as resolved.
Show resolved Hide resolved
return 'threads';
}
return 'message';
};

type ToolboxProps = {
message: IMessage;
messageContext?: 'message' | 'thread' | 'federated';
Educg550 marked this conversation as resolved.
Show resolved Hide resolved
};

const Toolbox = ({ message }: ToolboxProps): ReactElement | null => {
const Toolbox = ({ message, messageContext }: ToolboxProps): ReactElement | null => {
const t = useTranslation();

const room = useRoom();
Expand All @@ -40,7 +41,8 @@ const Toolbox = ({ message }: ToolboxProps): ReactElement | null => {
const settings = useSettings();
const user = useUser() as IUser;

const context = getMessageContext(message, room);
console.log(messageContext);
Educg550 marked this conversation as resolved.
Show resolved Hide resolved
const context = getMessageContext(message, room, messageContext);

const mapSettings = useMemo(() => Object.fromEntries(settings.map((setting) => [setting._id, setting.value])), [settings]);

Expand Down
Expand Up @@ -85,7 +85,7 @@ const ThreadMessage = ({ message, sequential, unread }: ThreadMessageProps): Rea

{ignored ? <IgnoredContent onShowMessageIgnored={toggleIgnoring} /> : <ThreadMessageContent message={normalizedMessage} />}
</MessageContainer>
{!message.private && <ToolboxHolder message={message} />}
{!message.private && <ToolboxHolder message={message} context={'thread'} />}
</Message>
);
};
Expand Down