删掉小红书导出 hook 里无人调用的 runExport

- useXhsMinitoolExport 移除 runExport 与返回项,构建只经 packageAll 到达 buildOnce
- 测试改用 packageAll 驱动构建路径,删掉 runExport 的 mock 与断言
This commit is contained in:
2026-10-06 19:24:14 +08:00
parent 226a339ced
commit 91b664b66f
2 changed files with 7 additions and 21 deletions
@@ -316,7 +316,7 @@ export function useXhsMinitoolExport({
/**
* 跑一次构建:每次都重新跑脚本、重新产出 zip,没有"上次的产物还能用"这条捷径。
*
* 不碰 `running`:调用方决定这次构建是一次独立导出,还是「打包」里保存之后的收尾。
* 不碰 `running`:由调用方(`packageAll`)决定这次构建在哪一层持锁。
*/
const buildOnce = useCallback(async (): Promise<void> => {
if (!projectPath) return;
@@ -340,17 +340,6 @@ export function useXhsMinitoolExport({
}
}, [projectPath, throwToErrorPool]);
/** 只重新构建:失败卡片上的「重试」走这里,不夹带保存。 */
const runExport = useCallback(async (): Promise<void> => {
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,
@@ -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(),