feat: 自动更新改为每天检查一次

- 新增 localStorage 记录上次检查时间戳 (mjk_last_update_check)
- 启动时判断距离上次检查是否超过 24 小时
- 未超过则跳过,避免每次启动都请求后端
- 设置页手动检查不受此限制
This commit is contained in:
小鱼开发
2026-06-01 16:51:25 +08:00
parent 6f9e4e3e4e
commit d195bb9f1b
@@ -2,7 +2,7 @@
* 更新对话框组件 * 更新对话框组件
* ============== * ==============
* *
* 应用启动时自动检查更新,发现新版本后弹出此对话框。 * 应用启动时自动检查更新(每天最多一次),发现新版本后弹出此对话框。
* 支持强制更新(无法跳过)。 * 支持强制更新(无法跳过)。
*/ */
@@ -30,11 +30,22 @@ export default function UpdateDialog() {
relaunch, relaunch,
} = useUpdater(); } = useUpdater();
// 应用启动时自动检查更新(延迟 3 秒,避免阻塞首屏 // 应用启动时自动检查更新(每天最多一次
// silent=true:失败时不弹窗,只打 console 日志 // 延迟 3 秒避免阻塞首屏;silent=true:失败时不弹窗,只打 console 日志
useEffect(() => { useEffect(() => {
const timer = setTimeout(() => { const timer = setTimeout(() => {
check(true); const LAST_CHECK_KEY = 'mjk_last_update_check';
const ONE_DAY_MS = 24 * 60 * 60 * 1000;
const lastCheckRaw = localStorage.getItem(LAST_CHECK_KEY);
const lastCheck = lastCheckRaw ? parseInt(lastCheckRaw, 10) : 0;
const now = Date.now();
if (!lastCheck || now - lastCheck > ONE_DAY_MS) {
check(true).finally(() => {
localStorage.setItem(LAST_CHECK_KEY, Date.now().toString());
});
}
}, 3000); }, 3000);
return () => clearTimeout(timer); return () => clearTimeout(timer);
}, [check]); }, [check]);