diff --git a/.changeset/pretty-islands-wink.md b/.changeset/pretty-islands-wink.md
new file mode 100644
index 00000000000..e9de264504b
--- /dev/null
+++ b/.changeset/pretty-islands-wink.md
@@ -0,0 +1,5 @@
+---
+'@rocket.chat/meteor': minor
+---
+
+Disables OTR messages selection when exporting messages
diff --git a/apps/meteor/client/components/message/variants/RoomMessage.tsx b/apps/meteor/client/components/message/variants/RoomMessage.tsx
index 90bc2236e83..54d3dcdea53 100644
--- a/apps/meteor/client/components/message/variants/RoomMessage.tsx
+++ b/apps/meteor/client/components/message/variants/RoomMessage.tsx
@@ -55,8 +55,10 @@ const RoomMessage = ({
const { openUserCard, triggerProps } = useUserCard();
const selecting = useIsSelecting();
+ const isOTRMessage = message.t === 'otr' || message.t === 'otr-ack';
+
const toggleSelected = useToggleSelect(message._id);
- const selected = useIsSelectedMessage(message._id);
+ const selected = useIsSelectedMessage(message._id, isOTRMessage);
useCountSelected();
@@ -70,7 +72,7 @@ const RoomMessage = ({
aria-roledescription={t('message')}
tabIndex={0}
aria-labelledby={`${message._id}-displayName ${message._id}-time ${message._id}-content ${message._id}-read-status`}
- onClick={selecting ? toggleSelected : undefined}
+ onClick={selecting && !isOTRMessage ? toggleSelected : undefined}
isSelected={selected}
isEditing={editing}
isPending={message.temp}
@@ -99,7 +101,7 @@ const RoomMessage = ({
{...triggerProps}
/>
)}
- {selecting && }
+ {selecting && }
{sequential && }
diff --git a/apps/meteor/client/components/message/variants/ThreadMessagePreview.tsx b/apps/meteor/client/components/message/variants/ThreadMessagePreview.tsx
index f7fa072a740..146bda990d5 100644
--- a/apps/meteor/client/components/message/variants/ThreadMessagePreview.tsx
+++ b/apps/meteor/client/components/message/variants/ThreadMessagePreview.tsx
@@ -45,8 +45,10 @@ const ThreadMessagePreview = ({ message, showUserAvatar, sequential, ...props }:
const { t } = useTranslation();
const isSelecting = useIsSelecting();
+ const isOTRMessage = message.t === 'otr' || message.t === 'otr-ack';
+
const toggleSelected = useToggleSelect(message._id);
- const isSelected = useIsSelectedMessage(message._id);
+ const isSelected = useIsSelectedMessage(message._id, isOTRMessage);
useCountSelected();
const messageType = parentMessage.isSuccess ? MessageTypes.getType(parentMessage.data) : null;
@@ -65,6 +67,10 @@ const ThreadMessagePreview = ({ message, showUserAvatar, sequential, ...props }:
return goToThread({ rid: message.rid, tmid: message.tmid, msg: message._id });
}
+ if (isOTRMessage) {
+ return;
+ }
+
return toggleSelected();
};
@@ -117,7 +123,7 @@ const ThreadMessagePreview = ({ message, showUserAvatar, sequential, ...props }:
size='x18'
/>
)}
- {isSelecting && }
+ {isSelecting && }
diff --git a/apps/meteor/client/views/room/MessageList/contexts/SelectedMessagesContext.tsx b/apps/meteor/client/views/room/MessageList/contexts/SelectedMessagesContext.tsx
index 800f7155082..527ea332cc1 100644
--- a/apps/meteor/client/views/room/MessageList/contexts/SelectedMessagesContext.tsx
+++ b/apps/meteor/client/views/room/MessageList/contexts/SelectedMessagesContext.tsx
@@ -11,7 +11,7 @@ export const SelectedMessageContext = createContext({
selectedMessageStore,
} as SelectMessageContextValue);
-export const useIsSelectedMessage = (mid: string): boolean => {
+export const useIsSelectedMessage = (mid: string, omit?: boolean): boolean => {
const { selectedMessageStore } = useContext(SelectedMessageContext);
const subscribe = useCallback(
@@ -24,14 +24,14 @@ export const useIsSelectedMessage = (mid: string): boolean => {
const isSelected = useSyncExternalStore(subscribe, getSnapshot);
useEffect(() => {
- if (isSelected) {
+ if (isSelected || omit) {
return;
}
selectedMessageStore.addAvailableMessage(mid);
return () => selectedMessageStore.removeAvailableMessage(mid);
- }, [mid, selectedMessageStore, isSelected]);
+ }, [mid, selectedMessageStore, isSelected, omit]);
return isSelected;
};
diff --git a/apps/meteor/client/views/room/contextualBar/ExportMessages/ExportMessages.tsx b/apps/meteor/client/views/room/contextualBar/ExportMessages/ExportMessages.tsx
index 8736c8a1bec..c05faece42e 100644
--- a/apps/meteor/client/views/room/contextualBar/ExportMessages/ExportMessages.tsx
+++ b/apps/meteor/client/views/room/contextualBar/ExportMessages/ExportMessages.tsx
@@ -176,6 +176,13 @@ const ExportMessages = () => {