重构画布动作上下文与刷新链路

新增编辑器级画布动作上下文与 Provider,统一承载画布动作
将 Agent 对话和任务侧栏的画布刷新迁移到上下文,移除逐层回调透传
统一生成任务完成后的项目刷新入口,避免重复加载项目快照
补齐上下文及刷新链路测试,并更新测试 Provider 装配
This commit is contained in:
2026-07-31 12:00:39 +08:00
parent a36290b2e5
commit ae8d723552
14 changed files with 209 additions and 56 deletions
@@ -17,6 +17,7 @@ import {
import type { ExternalGenerationTaskRecord } from '../../../packages/shared/src/contracts/externalGeneration';
import { listExternalGenerationTasks } from '../../services/external-generation';
import { useImageCanvasActions } from './ImageCanvasActionsContext.ts';
import { EditorIconButton } from './ImageCanvasEditorPrimitives';
import type { CanvasTaskStatus } from './ImageCanvasEditorTypes';
import { useImageCanvasContextStore } from './useImageCanvasContextStore.ts';
@@ -280,6 +281,7 @@ export function ImageCanvasTaskSidebarView({
onFocusExternalTask,
onExternalTasksCompleted,
}: ImageCanvasTaskSidebarViewProps) {
const { refreshCanvas } = useImageCanvasActions();
const projectId = useImageCanvasContextStore((state) => state.projectId);
const normalizedProjectId = projectId?.trim() ?? '';
const [activeTab, setActiveTab] = useState<TaskSidebarTab>('active');
@@ -334,9 +336,10 @@ export function ImageCanvasTaskSidebarView({
for (const task of newlyCompletedTasks) {
completedRefreshNotifiedTaskIdsRef.current.add(task.jobId);
}
refreshCanvas();
onExternalTasksCompleted?.(newlyCompletedTasks);
},
[onExternalTasksCompleted],
[onExternalTasksCompleted, refreshCanvas],
);
useEffect(() => {