diff --git a/app/canvas/[id]/CanvasEditorLegacyPageClient.tsx b/app/canvas/[id]/CanvasEditorLegacyPageClient.tsx index 7484395dc..cc4ba95b8 100644 --- a/app/canvas/[id]/CanvasEditorLegacyPageClient.tsx +++ b/app/canvas/[id]/CanvasEditorLegacyPageClient.tsx @@ -3813,8 +3813,8 @@ export default function CanvasEditorLegacyPage({ params }: PageProps) { setIsAgentProjectMenuOpen(false); setIsAgentProjectLoading(true); setLoadedAgentProjectId(null); + const localDraft = readAgentProjectDraftSnapshot(agentProjectId); try { - const localDraft = readAgentProjectDraftSnapshot(agentProjectId); const result = await agentProjectService.getProject(agentProjectId); if (!result.success || !result.data) { if (isUnauthorizedApiError(result.error)) { @@ -3860,6 +3860,14 @@ export default function CanvasEditorLegacyPage({ params }: PageProps) { }); } catch (error) { if (!cancelled) { + hydrateAgentProjectSnapshot({ + projectId: agentProjectId, + title: localDraft?.title, + thumbnail: localDraft?.thumbnail, + projectState: + localDraft?.projectState || + createEmptyAgentGenerationProjectPersistedState(), + }); toast.error( error instanceof Error ? error.message : "加载生图项目失败" ); @@ -3888,6 +3896,28 @@ export default function CanvasEditorLegacyPage({ params }: PageProps) { } }, [isAgentProjectSheetOpen]); + useEffect(() => { + if (!isAgentMode) return; + if (isLoginDialogOpen || isAgentProjectSheetOpen || isAgentProjectMenuOpen) { + return; + } + + const restoreBodyPointerEvents = () => { + if (document.body.style.pointerEvents === "none") { + document.body.style.pointerEvents = ""; + } + }; + + restoreBodyPointerEvents(); + const timeoutId = window.setTimeout(restoreBodyPointerEvents, 120); + return () => window.clearTimeout(timeoutId); + }, [ + isAgentMode, + isAgentProjectMenuOpen, + isAgentProjectSheetOpen, + isLoginDialogOpen, + ]); + useEffect(() => { if ( !isAgentMode || @@ -9170,6 +9200,26 @@ export default function CanvasEditorLegacyPage({ params }: PageProps) { ) : null; + const agentProjectOpeningScreen = + isAgentMode && hasActiveAgentProject && !hasLoadedCurrentAgentProject ? ( +