fix(陶泥儿导出): 线上媒体回读放进发布进度弹窗,避免回写吞掉编辑

- 发布成功后进度弹窗保持 running(“正在回读线上媒体…”),等 refreshOnline 与 rewritePublishedMediaToObjectKeys 都完成再关闭
- 弹窗开着时页面不可操作,用户无法在 await 窗口增删换截图,回读后的回写不会静默覆盖这些编辑(#17)
- 回读失败单独 catch,不把已经成功的发布误报成“发布失败”
This commit is contained in:
2026-10-07 20:53:23 +08:00
parent 8a42d20ee5
commit 6fdca1f8ce
@@ -288,15 +288,27 @@ export function useTaonierTab({
// 发布期间换了项目:旧项目的结果属于旧项目,别落进新项目面板。
if (projectPathRef.current !== projectPath) return;
setPublishResult(next);
setProgress(null);
// 发布成功后把草稿里刚上传的本地路径悄悄改写成平台返回的 objectKey。键来自发布响应本身
// (新上传落的桶 + 沿用的旧键,顺序与槽位一致),不依赖回读;先回读一次上一版本只是为了
// 拿到刚发布媒体的换签预览,改写后当前槽位立刻能按 OSS 同一来源显示,与上一版本逐张对照。
void (async () => {
//
// 回读也放进进度弹窗:弹窗开着时页面不可操作,用户没法在 await 期间增删换截图,
// 回读后的改写就不会静默吞掉这些编辑(#17)。
setProgress({
phase: 'running',
message: '正在回读线上媒体…',
step: 'submit',
percent: null,
});
try {
await taonier.refreshOnline();
if (projectPathRef.current !== projectPath) return;
taonier.rewritePublishedMediaToObjectKeys(next);
})();
} catch {
// 回读失败不影响本次发布结果:发布响应里已经带回 objectKey,下次打开会再回读一次。
} finally {
if (projectPathRef.current === projectPath) setProgress(null);
}
} catch (error) {
// 旧项目的发布失败不该记到新项目头上。
if (projectPathRef.current !== projectPath) return;