diff --git a/apps/ai-game-creator-shell/src/view/project-development/export/state/useXhsMinitoolExport.ts b/apps/ai-game-creator-shell/src/view/project-development/export/state/useXhsMinitoolExport.ts index c6ebd6ebd..1b1279c6a 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/export/state/useXhsMinitoolExport.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/export/state/useXhsMinitoolExport.ts @@ -316,7 +316,7 @@ export function useXhsMinitoolExport({ /** * 跑一次构建:每次都重新跑脚本、重新产出 zip,没有"上次的产物还能用"这条捷径。 * - * 不碰 `running`:调用方决定这次构建是一次独立导出,还是「打包」里保存之后的收尾。 + * 不碰 `running`:由调用方(`packageAll`)决定这次构建在哪一层持锁。 */ const buildOnce = useCallback(async (): Promise => { if (!projectPath) return; @@ -340,17 +340,6 @@ export function useXhsMinitoolExport({ } }, [projectPath, throwToErrorPool]); - /** 只重新构建:失败卡片上的「重试」走这里,不夹带保存。 */ - const runExport = useCallback(async (): Promise => { - if (!projectPath) return; - setRunning(true); - try { - await buildOnce(); - } finally { - setRunning(false); - } - }, [projectPath, buildOnce]); - /** * 打包:先**现场复算**「有没有脚本」,再冲掉没保存的输入,最后跑构建。 * @@ -497,7 +486,6 @@ export function useXhsMinitoolExport({ adaptPromptDismissed, updateField, resolveConflict, - runExport, packageAll, adapt, repair, diff --git a/apps/ai-game-creator-shell/tests/xhsMinitoolExport.test.tsx b/apps/ai-game-creator-shell/tests/xhsMinitoolExport.test.tsx index 2e9c6c3f3..8b419473e 100644 --- a/apps/ai-game-creator-shell/tests/xhsMinitoolExport.test.tsx +++ b/apps/ai-game-creator-shell/tests/xhsMinitoolExport.test.tsx @@ -568,7 +568,6 @@ describe('面板左半', () => { expect(screen.queryByRole('button', { name: '重试' })).toBeNull(); fireEvent.click(screen.getByRole('button', { name: '关闭' })); expect(minitool.dismissFailure).toHaveBeenCalledTimes(1); - expect(minitool.runExport).not.toHaveBeenCalled(); expect(minitool.repair).not.toHaveBeenCalled(); expect(minitool.adapt).not.toHaveBeenCalled(); } @@ -990,10 +989,10 @@ describe('状态 hook', () => { ); await waitFor(() => expect(result.current.form).toEqual(FORM)); - await expect(result.current.runExport()).rejects.toBe(transport); + await expect(result.current.packageAll()).rejects.toBe(transport); expect(result.current.failure).toBeNull(); // 同一个故障只抛一次:轮询每 2 秒重读一次,不能让错误池的 count 变成轮询次数。 - await expect(result.current.runExport()).resolves.toBeUndefined(); + await expect(result.current.packageAll()).resolves.toBeUndefined(); }); it('宿主侧事实故障先给卡片、再把同一个故障抛一次', async () => { @@ -1017,7 +1016,7 @@ describe('状态 hook', () => { // 卡片照常给现场,同时原样抛出(真实 WebView 里由全局 handler 结算进错误池)。 await act(async () => { - await expect(result.current.runExport()).rejects.toBeInstanceOf(Error); + await expect(result.current.packageAll()).rejects.toBeInstanceOf(Error); }); // 面板留下的就是宿主那个原始错误,用户那句话是渲染时从变体推的。 expect(result.current.failure).toEqual({ @@ -1025,7 +1024,7 @@ describe('状态 hook', () => { cause: '项目根不可用:找不到目录', }); await act(async () => { - await expect(result.current.runExport()).resolves.toBeUndefined(); + await expect(result.current.packageAll()).resolves.toBeUndefined(); }); }); @@ -1165,7 +1164,7 @@ describe('状态 hook', () => { await waitFor(() => expect(result.current.form).toEqual(FORM)); await act(async () => { - await result.current.runExport(); + await result.current.packageAll(); }); expect(result.current.failure).toEqual({ type: 'commandFailed', @@ -1206,7 +1205,7 @@ describe('状态 hook', () => { await waitFor(() => expect(result.current.form).toEqual(FORM)); await act(async () => { - await result.current.runExport(); + await result.current.packageAll(); }); expect(result.current.failure).toEqual({ type: 'saveConflict', @@ -1246,7 +1245,6 @@ function fakeMinitool( adaptPromptDismissed: false, updateField: vi.fn(), resolveConflict: vi.fn(), - runExport: vi.fn(async () => undefined), packageAll: vi.fn(async () => undefined), adapt: vi.fn(), repair: vi.fn(),