diff --git a/src/app/features/room/thread/ThreadPanel.tsx b/src/app/features/room/thread/ThreadPanel.tsx index 948a2725e..85177a93d 100644 --- a/src/app/features/room/thread/ThreadPanel.tsx +++ b/src/app/features/room/thread/ThreadPanel.tsx @@ -116,6 +116,8 @@ export function ThreadPanel({ room, threadId, requestClose }: ThreadPanelProps) const editor = useEditor(); const thread = useThreadInstance(room, threadId); const [privateReadReceipts] = useSetting(settingsAtom, 'privateReadReceipts'); + // "Hide Typing & Read Receipts" must also make thread receipts private (matches markAsRead). + const [hideActivity] = useSetting(settingsAtom, 'hideActivity'); const fileDropContainerRef = useRef(null) as React.RefObject; useKeyDown( @@ -157,7 +159,7 @@ export function ThreadPanel({ room, threadId, requestClose }: ThreadPanelProps) } if (!latestId || latestId === lastReadEventIdRef.current) return; lastReadEventIdRef.current = latestId; - markThreadAsRead(mx, thread, privateReadReceipts).catch(() => { + markThreadAsRead(mx, thread, hideActivity || privateReadReceipts).catch(() => { // Allow a retry on the next event if the receipt POST failed. if (lastReadEventIdRef.current === latestId) { lastReadEventIdRef.current = undefined; @@ -171,7 +173,7 @@ export function ThreadPanel({ room, threadId, requestClose }: ThreadPanelProps) thread.off(ThreadEvent.NewReply, markRead); thread.off(RoomEvent.Timeline, markRead); }; - }, [mx, thread, privateReadReceipts]); + }, [mx, thread, privateReadReceipts, hideActivity]); return (