diff --git a/Changelog.md b/Changelog.md index b388fa1da..0b2531d63 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,7 @@ - 修复 Monaco 编辑器内右键菜单显示异常 - 修复设置代理端口时检查端口占用 - 修复 Monaco 编辑器初始化卡 Loading +- 修复恢复备份时 `config.yaml` / `profiles.yaml` 文件内字段未正确恢复
✨ 新增功能 diff --git a/src-tauri/src/feat/backup.rs b/src-tauri/src/feat/backup.rs index 9b4d187bd..0f61b5be9 100644 --- a/src-tauri/src/feat/backup.rs +++ b/src-tauri/src/feat/backup.rs @@ -1,5 +1,5 @@ use crate::{ - config::{Config, IVerge}, + config::{Config, IClashTemp, IProfiles, IVerge}, core::backup, process::AsyncHandler, utils::{ @@ -25,6 +25,7 @@ pub struct LocalBackupFile { } /// Load restored verge.yaml from disk, merge back WebDAV creds, save, and sync memory. +/// Also reload other restored configs so restarts won't overwrite them. async fn finalize_restored_verge_config( webdav_url: Option, webdav_username: Option, @@ -38,6 +39,20 @@ async fn finalize_restored_verge_config( restored.webdav_password = webdav_password; restored.save_file().await?; + let restored_clash = IClashTemp::new().await; + let clash_draft = Config::clash().await; + clash_draft.edit_draft(|d| { + *d = restored_clash.clone(); + }); + clash_draft.apply(); + + let restored_profiles = IProfiles::new().await; + let profiles_draft = Config::profiles().await; + profiles_draft.edit_draft(|d| { + *d = restored_profiles.clone(); + }); + profiles_draft.apply(); + let verge_draft = Config::verge().await; verge_draft.edit_draft(|d| { *d = restored.clone();