diff --git a/src/bundled/channels/ChannelsPage.tsx b/src/bundled/channels/ChannelsPage.tsx index d172dd057c..76c2310d67 100644 --- a/src/bundled/channels/ChannelsPage.tsx +++ b/src/bundled/channels/ChannelsPage.tsx @@ -24,6 +24,7 @@ import { Avatar } from "../../shared/design-system/ui/Avatar"; import { useToastNotification } from "../../shared/design-system/ui/Toast"; import { useReturnHighlight } from "../../features/messages/use-return-highlight"; import { useMessageOpening } from "../../features/messages/use-message-opening"; +import { watchRevealRequest } from "../../features/messages/use-message-reveal"; import { ChannelBody } from "./ChannelBody"; import { entryPane, @@ -677,6 +678,12 @@ function ChannelWorkspace({ navigation?.target.kind === "conversation" ? navigation.target.threadRootId : undefined; + useLayoutEffect(() => { + // The message's reveal waits for its channel, timeline or thread to load. + // Focus the person moves or text they type meanwhile counts from now. + if (!requestedMessage || !navigation || navigation.signal.aborted) return; + return watchRevealRequest(navigation.signal); + }, [requestedMessage, navigation]); const membersRequested = navigation?.target.kind === "conversation" && navigation.target.panel === "members"; diff --git a/src/features/messages/ThreadPanel.test.tsx b/src/features/messages/ThreadPanel.test.tsx index 9a1f5c0530..f46e763f5a 100644 --- a/src/features/messages/ThreadPanel.test.tsx +++ b/src/features/messages/ThreadPanel.test.tsx @@ -116,6 +116,7 @@ vi.mock("./MessageComposer", () => ({ data-placeholder={placeholder} data-focus-request={focusRequest} > +