diff --git a/apps/ai-game-creator-shell/src/view/project-development/export/tabs/xiaohongshu/ArtifactsPane.tsx b/apps/ai-game-creator-shell/src/view/project-development/export/tabs/xiaohongshu/ArtifactsPane.tsx index 9f5fa8166..9ed57f0ac 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/export/tabs/xiaohongshu/ArtifactsPane.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/export/tabs/xiaohongshu/ArtifactsPane.tsx @@ -1,4 +1,5 @@ import { openUrl } from '@tauri-apps/plugin-opener'; +import type { ReactNode } from 'react'; import type { XhsMinitoolExportState } from '../../state/useXhsMinitoolExport'; import { saveXhsMinitoolFileToDisk } from '../../state/xhsMinitoolDownload'; @@ -69,29 +70,38 @@ export function ArtifactsPane({ }); }; + /** + * 左半顶部槽位:整张表单 / 一行读取中 / 什么都不放(读失败由弹窗拿着现场)/ 一行自动重试兜底。 + * 四种形状差得远,用 if/else 摊开算好,JSX 里只留一个 `{formSlot}`,别把控制流埋进链式三元。 + */ + let formSlot: ReactNode = null; + if (form) { + formSlot = ( + void minitool.fillForm()} + /> + ); + } else if (!minitool.readSettled) { + formSlot =

正在读取导出信息…

; + } else if (!failure) { + // 读失败时上面不重复一句话:失败弹窗拿着宿主的现场和下一步。 + formSlot = ( +

没能读到导出信息,正在自动重试…

+ ); + } + return (
- {form ? ( - void minitool.fillForm()} - /> - ) : !minitool.readSettled ? ( -

正在读取导出信息…

- ) : // 读失败时上面不重复一句话:失败弹窗拿着宿主的现场和下一步。 - failure ? null : ( -

- 没能读到导出信息,正在自动重试… -

- )} + {formSlot}