refresh on gen job done

This commit is contained in:
2026-07-14 13:10:19 +08:00
parent d25d9a2935
commit 3796445b3b
2 changed files with 28 additions and 2 deletions
@@ -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 ? <ThinkingBubble /> : null}
@@ -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,