refactor(desktop): extract composer frame scroll callback

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Signed-off-by: Logan Johnson <loganj@squareup.com>
This commit is contained in:
Logan Johnson
2026-09-08 13:37:54 -04:00
parent bf6144a3ba
commit ada2df7878
2 changed files with 16 additions and 7 deletions

View File

@@ -55,6 +55,7 @@ import { ComposerDockToolbar } from "./ComposerDockToolbar";
import { ComposerUploadError } from "./ComposerUploadError";
import { ComposerUploadProgressPill } from "./ComposerUploadProgressPill";
import { NonMemberMentionDialog } from "./NonMemberMentionDialog";
import { useComposerScrollToBottom } from "./useComposerScrollToBottom";
import { useComposerVoiceNote } from "./useComposerVoiceNote";
import { useMentionSendFlow } from "./useMentionSendFlow";
import { useAgentAddressLockPicker } from "./useAgentAddressLockPicker";
@@ -273,13 +274,7 @@ function MessageComposerImpl({
((info: LinkSelectionInfo | null) => void) | null
>(null);
const onLinkShortcutRef = React.useRef<(() => boolean) | null>(null);
const scrollComposerToBottom = React.useCallback(() => {
window.requestAnimationFrame(() => {
const scrollElement = composerScrollRef.current;
if (!scrollElement) return;
scrollElement.scrollTop = scrollElement.scrollHeight;
});
}, []);
const scrollComposerToBottom = useComposerScrollToBottom(composerScrollRef);
const computedPlaceholder = editTarget
? "Edit your message"
: (placeholder ??

View File

@@ -0,0 +1,14 @@
import * as React from "react";
/** Scroll the current composer element after its next layout frame. */
export function useComposerScrollToBottom(
composerScrollRef: React.RefObject<HTMLDivElement | null>,
) {
return React.useCallback(() => {
window.requestAnimationFrame(() => {
const scrollElement = composerScrollRef.current;
if (!scrollElement) return;
scrollElement.scrollTop = scrollElement.scrollHeight;
});
}, [composerScrollRef]);
}