From eb0852e64d20e1d875b00667f513024cca113581 Mon Sep 17 00:00:00 2001 From: benya Date: Sun, 8 Mar 2026 13:25:28 +0300 Subject: [PATCH] fix(web): keep editable text stable while typing --- web/src/components/MessageComposer.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/web/src/components/MessageComposer.tsx b/web/src/components/MessageComposer.tsx index ea78885..89ce035 100644 --- a/web/src/components/MessageComposer.tsx +++ b/web/src/components/MessageComposer.tsx @@ -37,6 +37,7 @@ export function MessageComposer() { const pointerMoveHandlerRef = useRef<((event: globalThis.PointerEvent) => void) | null>(null); const pointerUpHandlerRef = useRef<((event: globalThis.PointerEvent) => void) | null>(null); const recordingStateRef = useRef("idle"); + const lastEditingMessageIdRef = useRef(null); const [isUploading, setIsUploading] = useState(false); const [uploadProgress, setUploadProgress] = useState(0); @@ -73,20 +74,22 @@ export function MessageComposer() { if (text !== "") { setText(""); } + lastEditingMessageIdRef.current = null; return; } if (editingMessage) { - const editingText = editingMessage.text ?? ""; - if (text !== editingText) { - setText(editingText); + if (lastEditingMessageIdRef.current !== editingMessage.id) { + setText(editingMessage.text ?? ""); } + lastEditingMessageIdRef.current = editingMessage.id; return; } + lastEditingMessageIdRef.current = null; const draft = draftsByChat[activeChatId] ?? ""; if (draft !== text) { setText(draft); } - }, [activeChatId, draftsByChat, text, editingMessage]); + }, [activeChatId, draftsByChat, editingMessage, text]); useEffect(() => { return () => {