Skip to content

Commit 04149ab

Browse files
authored
fix: display message actions dialogs for thread replies sent to channel (#2823)
1 parent 3701b40 commit 04149ab

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

src/components/Message/MessageOptions.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,18 @@ const UnMemoizedMessageOptions = (props: MessageOptionsProps) => {
5050
} = useMessageContext('MessageOptions');
5151

5252
const { t } = useTranslationContext('MessageOptions');
53-
const messageActionsDialogIsOpen = useDialogIsOpen(`message-actions--${message.id}`);
53+
54+
// It is necessary to namespace the dialog IDs because a message with the same ID
55+
// can appear in the main message list as well as in the thread message list.
56+
// Without the namespace, the search for dialog would be performed by the message ID only
57+
// which could return the dialog for a message in another message list (which would not be rendered).
58+
const dialogIdNamespace = threadList ? '-thread-' : '';
59+
60+
const messageActionsDialogIsOpen = useDialogIsOpen(
61+
`message-actions${dialogIdNamespace}--${message.id}`,
62+
);
5463
const reactionSelectorDialogIsOpen = useDialogIsOpen(
55-
`reaction-selector--${message.id}`,
64+
`reaction-selector${dialogIdNamespace}--${message.id}`,
5665
);
5766
const handleOpenThread = propHandleOpenThread || contextHandleOpenThread;
5867

src/components/MessageActions/MessageActions.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ export const MessageActions = (props: MessageActionsProps) => {
8383

8484
const isMuted = useCallback(() => isUserMuted(message, mutes), [message, mutes]);
8585

86-
const dialogId = `message-actions--${message.id}`;
86+
const dialogIdNamespace = threadList ? '-thread-' : '';
87+
const dialogId = `message-actions${dialogIdNamespace}--${message.id}`;
8788
const dialog = useDialog({ id: dialogId });
8889
const dialogIsOpen = useDialogIsOpen(dialogId);
8990

src/components/Reactions/ReactionSelectorWithButton.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ export const ReactionSelectorWithButton = ({
2323
ReactionIcon,
2424
}: ReactionSelectorWithButtonProps) => {
2525
const { t } = useTranslationContext('ReactionSelectorWithButton');
26-
const { isMyMessage, message } = useMessageContext('MessageOptions');
26+
const { isMyMessage, message, threadList } = useMessageContext('MessageOptions');
2727
const { ReactionSelector = DefaultReactionSelector } =
2828
useComponentContext('MessageOptions');
2929
const buttonRef = useRef<ElementRef<'button'>>(null);
30-
const dialogId = `reaction-selector--${message.id}`;
30+
const dialogIdNamespace = threadList ? '-thread-' : '';
31+
const dialogId = `reaction-selector${dialogIdNamespace}--${message.id}`;
3132
const dialog = useDialog({ id: dialogId });
3233
const dialogIsOpen = useDialogIsOpen(dialogId);
3334
return (

0 commit comments

Comments
 (0)