diff --git a/src/components/middle/message/Message.tsx b/src/components/middle/message/Message.tsx index 00b0b227d..2b68e9c42 100644 --- a/src/components/middle/message/Message.tsx +++ b/src/components/middle/message/Message.tsx @@ -41,6 +41,7 @@ import { selectShouldAutoPlayMedia, selectShouldLoopStickers, selectTheme, + selectAllowedMessageActions, } from '../../../modules/selectors'; import { getMessageContent, @@ -140,6 +141,7 @@ type StateProps = { isForwarding?: boolean; isChatWithSelf?: boolean; isChannel?: boolean; + canReply?: boolean; lastSyncTime?: number; highlight?: string; isSingleEmoji?: boolean; @@ -200,6 +202,7 @@ const Message: FC = ({ isForwarding, isChatWithSelf, isChannel, + canReply, lastSyncTime, highlight, animatedEmoji, @@ -309,6 +312,7 @@ const Message: FC = ({ isLocal, isAlbum, Boolean(isInSelectMode), + Boolean(canReply), onContextMenu, handleBeforeContextMenu, ); @@ -836,6 +840,8 @@ export default memo(withGlobal( isSelected = selectIsMessageSelected(global, id); } + const { canReply } = (messageListType === 'thread' && selectAllowedMessageActions(global, message, threadId)) || {}; + return { theme: selectTheme(global), chatUsername, @@ -851,6 +857,7 @@ export default memo(withGlobal( isForwarding, isChatWithSelf, isChannel, + canReply, lastSyncTime, highlight, isSingleEmoji: Boolean(singleEmoji), diff --git a/src/components/middle/message/hooks/useOuterHandlers.ts b/src/components/middle/message/hooks/useOuterHandlers.ts index 5643157ae..73149a161 100644 --- a/src/components/middle/message/hooks/useOuterHandlers.ts +++ b/src/components/middle/message/hooks/useOuterHandlers.ts @@ -18,6 +18,7 @@ export default function useOuterHandlers( isLocal: boolean, isAlbum: boolean, isInSelectMode: boolean, + canReply: boolean, onContextMenu: (e: React.MouseEvent) => void, handleBeforeContextMenu: (e: React.MouseEvent) => void, ) { @@ -74,7 +75,7 @@ export default function useOuterHandlers( } useEffect(() => { - if (!IS_TOUCH_ENV || isInSelectMode) { + if (!IS_TOUCH_ENV || isInSelectMode || !canReply) { return undefined; } @@ -105,7 +106,7 @@ export default function useOuterHandlers( startedAt = undefined; }, }); - }, [containerRef, isInSelectMode, messageId, setReplyingToId, markSwiped, unmarkSwiped]); + }, [containerRef, isInSelectMode, messageId, setReplyingToId, markSwiped, unmarkSwiped, canReply]); return { handleMouseDown: !isInSelectMode ? handleMouseDown : undefined,