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:
committed by
GitHub
parent
1183f09967
commit
ab07116ee8
@@ -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 () => {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user