From 3796445b3b1e886aab4b434c75b7d50a56a08dd1 Mon Sep 17 00:00:00 2001 From: kvtodev Date: Tue, 14 Jul 2026 13:10:19 +0800 Subject: [PATCH] refresh on gen job done --- .../EditorAgentConversationPanelView.tsx | 6 ++++- .../useEditorAgentConversation.ts | 24 ++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/components/image-editor/EditorAgentConversation/EditorAgentConversationPanelView.tsx b/src/components/image-editor/EditorAgentConversation/EditorAgentConversationPanelView.tsx index 0cbff2f9e..b1ddf66bc 100644 --- a/src/components/image-editor/EditorAgentConversation/EditorAgentConversationPanelView.tsx +++ b/src/components/image-editor/EditorAgentConversation/EditorAgentConversationPanelView.tsx @@ -264,6 +264,7 @@ export function EditorAgentConversationPanelView({ errorMessage, createConversation, selectConversation, + refreshActiveConversation, sendMessage, stopCurrentTurn, confirmToolCall, @@ -608,7 +609,10 @@ export function EditorAgentConversationPanelView({ onCancelToolCall={(messageId) => { void cancelToolCall(messageId); }} - onJobCompleted={onCanvasRefreshRequested} + onJobCompleted={() => { + void refreshActiveConversation(); + onCanvasRefreshRequested?.(); + }} /> ))} {isWaiting ? : null} diff --git a/src/components/image-editor/EditorAgentConversation/useEditorAgentConversation.ts b/src/components/image-editor/EditorAgentConversation/useEditorAgentConversation.ts index a219b604c..8a25f3a81 100644 --- a/src/components/image-editor/EditorAgentConversation/useEditorAgentConversation.ts +++ b/src/components/image-editor/EditorAgentConversation/useEditorAgentConversation.ts @@ -294,6 +294,14 @@ export function useEditorAgentConversation({ [activeConversationId, loadConversation], ); + const refreshActiveConversation = useCallback(async () => { + const conversationId = activeConversationIdRef.current; + if (!conversationId) { + return null; + } + return loadConversation(conversationId); + }, [loadConversation]); + const requestCanvasRefreshForMessages = useCallback( (nextMessages: EditorAgentMessage[]) => { if ( @@ -315,7 +323,20 @@ export function useEditorAgentConversation({ const applyDeltaMessages = useCallback( (deltaMessages: EditorAgentMessage[]) => { - setMessages((currentMessages) => [...currentMessages, ...deltaMessages]); + setMessages((currentMessages) => { + const nextMessages = [...currentMessages]; + for (const deltaMessage of deltaMessages) { + const existingIndex = nextMessages.findIndex( + (message) => message.id === deltaMessage.id, + ); + if (existingIndex >= 0) { + nextMessages[existingIndex] = deltaMessage; + } else { + nextMessages.push(deltaMessage); + } + } + return nextMessages; + }); requestCanvasRefreshForMessages(deltaMessages); }, [requestCanvasRefreshForMessages], @@ -522,6 +543,7 @@ export function useEditorAgentConversation({ errorMessage, createConversation, selectConversation, + refreshActiveConversation, sendMessage, stopCurrentTurn, confirmToolCall,