From 1b20b7ff88c4de2fc4e4544b492639d42a28808f Mon Sep 17 00:00:00 2001 From: Jason Date: Sun, 22 Feb 2026 08:56:40 +0800 Subject: [PATCH] feat(backup): add hourly periodic backup timer during runtime Previously periodic backup only checked on startup. Now spawns a tokio interval task that checks every hour while the app is running. --- src-tauri/src/lib.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 464d85f03..5b023673e 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -769,10 +769,24 @@ pub fn run() { // 检查 settings 表中的代理状态,自动恢复代理服务 restore_proxy_state_on_startup(&state).await; - // Periodic backup check + // Periodic backup check (on startup) if let Err(e) = state.db.periodic_backup_if_needed() { log::warn!("Periodic backup failed on startup: {e}"); } + + // Periodic backup timer: check every hour while the app is running + let db_for_timer = state.db.clone(); + tauri::async_runtime::spawn(async move { + let mut interval = + tokio::time::interval(std::time::Duration::from_secs(3600)); + interval.tick().await; // skip immediate first tick (already checked above) + loop { + interval.tick().await; + if let Err(e) = db_for_timer.periodic_backup_if_needed() { + log::warn!("Periodic backup timer failed: {e}"); + } + } + }); }); // Linux: 禁用 WebKitGTK 硬件加速,防止 EGL 初始化失败导致白屏