diff --git a/webapp/channels/src/components/threading/global_threads/thread_item/thread_item.tsx b/webapp/channels/src/components/threading/global_threads/thread_item/thread_item.tsx index 8325200eb99..aa7891def2c 100644 --- a/webapp/channels/src/components/threading/global_threads/thread_item/thread_item.tsx +++ b/webapp/channels/src/components/threading/global_threads/thread_item/thread_item.tsx @@ -130,6 +130,13 @@ function ThreadItem({ return; } } + + // Don't select the thread when a menu is focused + if (e.target instanceof HTMLElement && + (e.target.hasAttribute('aria-haspopup') || e.target.role === 'menuitem')) { + return; + } + if (e.altKey) { const hasUnreads = thread ? Boolean(thread.unread_replies) : false; const lastViewedAt = hasUnreads ? Date.now() : unreadTimestamp; diff --git a/webapp/channels/src/components/threading/global_threads/thread_menu/thread_menu.tsx b/webapp/channels/src/components/threading/global_threads/thread_menu/thread_menu.tsx index 70d01dac50d..deb76dfad34 100644 --- a/webapp/channels/src/components/threading/global_threads/thread_menu/thread_menu.tsx +++ b/webapp/channels/src/components/threading/global_threads/thread_menu/thread_menu.tsx @@ -126,7 +126,9 @@ function ThreadMenu({ /> ) } - onClick={useCallback(() => { + onClick={useCallback((e: React.MouseEvent | React.KeyboardEvent) => { + e.stopPropagation(); + dispatch(setThreadFollow(currentUserId, currentTeamId, threadId, !isFollowing)); readAloud(isFollowing ? formatMessage({ id: 'threading.threadMenu.unfollowed', @@ -144,7 +146,9 @@ function ThreadMenu({ defaultMessage='Open in channel' /> } - onClick={useCallback(() => { + onClick={useCallback((e: React.MouseEvent | React.KeyboardEvent) => { + e.stopPropagation(); + goToInChannel(threadId); readAloud(formatMessage({ id: 'threading.threadMenu.openingChannel', @@ -178,7 +182,9 @@ function ThreadMenu({ defaultMessage='Save' /> )} - onClick={useCallback(() => { + onClick={useCallback((e: React.MouseEvent | React.KeyboardEvent) => { + e.stopPropagation(); + dispatch(isSaved ? unsavePost(threadId) : savePost(threadId)); readAloud(isSaved ? formatMessage({ id: 'threading.threadMenu.unsaved', @@ -196,7 +202,9 @@ function ThreadMenu({ defaultMessage='Copy link' /> } - onClick={useCallback(() => { + onClick={useCallback((e: React.MouseEvent | React.KeyboardEvent) => { + e.stopPropagation(); + copyToClipboard(`${getSiteURL()}/${team}/pl/${threadId}`); readAloud(formatMessage({ id: 'threading.threadMenu.linkCopied',