prevent draft restoration logic from overwriting changes to a message (#1127)

it was previously difficult to clear a follow-up up message as as if the
final character were removed, the message would be empty thus triggering
the draft restoration logic.
This commit is contained in:
Britannio Jarrett
2025-10-29 17:17:28 +00:00
committed by GitHub
parent 1183f09967
commit ab07116ee8
2 changed files with 6 additions and 1 deletions

View File

@@ -68,6 +68,7 @@ export function RetryEditorInline({
setImages, setImages,
handleImageUploaded, handleImageUploaded,
clearImagesAndUploads, clearImagesAndUploads,
isMessageLocallyDirty,
} = useDraftEditor({ } = useDraftEditor({
draft, draft,
taskId: attempt.task_id, taskId: attempt.task_id,
@@ -120,7 +121,7 @@ export function RetryEditorInline({
useEffect(() => { useEffect(() => {
if (!isRetryLoaded || !draft) return; if (!isRetryLoaded || !draft) return;
const serverPrompt = draft.prompt || ''; const serverPrompt = draft.prompt || '';
if (message === '' && serverPrompt !== '') { if (message === '' && serverPrompt !== '' && !isMessageLocallyDirty()) {
setMessage(serverPrompt); setMessage(serverPrompt);
if (import.meta.env.DEV) { if (import.meta.env.DEV) {
// One-shot debug to validate hydration ordering in dev // One-shot debug to validate hydration ordering in dev
@@ -138,6 +139,7 @@ export function RetryEditorInline({
isRetryLoaded, isRetryLoaded,
message, message,
setMessage, setMessage,
isMessageLocallyDirty,
]); ]);
const onSend = async () => { const onSend = async () => {

View File

@@ -20,6 +20,8 @@ export function useDraftEditor({ draft, taskId }: Args) {
const localDirtyRef = useRef<boolean>(false); const localDirtyRef = useRef<boolean>(false);
const imagesDirtyRef = useRef<boolean>(false); const imagesDirtyRef = useRef<boolean>(false);
const isMessageLocallyDirty = useCallback(() => localDirtyRef.current, []);
// Sync message with server when not locally dirty // Sync message with server when not locally dirty
useEffect(() => { useEffect(() => {
if (!draft) return; if (!draft) return;
@@ -84,5 +86,6 @@ export function useDraftEditor({ draft, taskId }: Args) {
newlyUploadedImageIds, newlyUploadedImageIds,
handleImageUploaded, handleImageUploaded,
clearImagesAndUploads, clearImagesAndUploads,
isMessageLocallyDirty,
} as const; } as const;
} }