fix(陶泥儿导出): 线上媒体回读放进发布进度弹窗,避免回写吞掉编辑
- 发布成功后进度弹窗保持 running(“正在回读线上媒体…”),等 refreshOnline 与 rewritePublishedMediaToObjectKeys 都完成再关闭 - 弹窗开着时页面不可操作,用户无法在 await 窗口增删换截图,回读后的回写不会静默覆盖这些编辑(#17) - 回读失败单独 catch,不把已经成功的发布误报成“发布失败”
This commit is contained in:
+15
-3
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user