fix(robustness): 截图探测被 abort 取消时不污染负缓存(维度2)

- checkScreenshotExists 原 catch 不区分异常类型,用户快速切换/关闭详情触发 abort 时,
  未完成的 HEAD 请求误写 false,导致同进程内再打开该应用少显示图片(重启才自愈)
- 改为 signal.aborted 时上抛错误:由 loadScreenshots 的 Promise.all reject 被 openDetail
  的 .catch 吞掉,既不写缓存也不覆盖 screenshots.value,后续新 controller 轮次正确填充
- 网络错误(非取消)仍正常写 false 过滤 404 脏数据;vue-tsc/lint/打包均通过
This commit is contained in:
xiyidaiwa
2026-08-13 23:09:10 +08:00
parent e67f4752a4
commit 3cedd0c517
2 changed files with 7 additions and 2 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
spark-store (5.2.1.7-test) UNRELEASED; urgency=medium
spark-store (5.2.1.8-test) UNRELEASED; urgency=medium
* Initial release. (Closes: #nnnn) <nnnn is the bug number of your ITP>
+6 -1
View File
@@ -417,7 +417,12 @@ const checkScreenshotExists = async (
await axiosInstance.head(url, { timeout: 3000, signal });
screenshotExistenceCache.set(url, true);
return true;
} catch {
} catch (err) {
// 请求被主动取消(用户快速切换/关闭详情触发 abort)时,不应把该 URL 误记为
// "不存在"污染缓存——否则同进程内再打开该应用会少显示图片,直到重启才恢复。
// 取消错误直接上抛,由 loadScreenshots 的 Promise.all reject 被 openDetail 吞掉,
// 既不写缓存也不覆盖 screenshots,后续成功的轮次(新 controller)会正确填充。
if (signal?.aborted) throw err;
screenshotExistenceCache.set(url, false);
return false;
}