From f3a3d0e8b0ed55ee56ab02b4e8aba85db19af904 Mon Sep 17 00:00:00 2001 From: Tunglies Date: Wed, 12 Nov 2025 07:36:24 +0800 Subject: [PATCH] refactor: update update_icon method to require a non-optional verge reference and adjust related calls (#5417) --- src-tauri/src/core/tray/mod.rs | 17 ++++------------- src-tauri/src/feat/clash.rs | 7 ++++++- src-tauri/src/feat/config.rs | 9 +++++++-- src-tauri/src/utils/init.rs | 10 +++++----- src-tauri/src/utils/network.rs | 4 ++-- src-tauri/src/utils/server.rs | 6 +++--- 6 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs index 5595d15a2..17ecd04f9 100644 --- a/src-tauri/src/core/tray/mod.rs +++ b/src-tauri/src/core/tray/mod.rs @@ -348,7 +348,7 @@ impl Tray { /// 更新托盘图标 #[cfg(target_os = "macos")] - pub async fn update_icon(&self, verge: Option<&IVerge>) -> Result<()> { + pub async fn update_icon(&self, verge: &IVerge) -> Result<()> { if handle::Handle::global().is_exiting() { logging!(debug, Type::Tray, "应用正在退出,跳过托盘图标更新"); return Ok(()); @@ -368,11 +368,6 @@ impl Tray { } }; - let verge = match verge { - Some(v) => v, - None => &Config::verge().await.data_arc(), - }; - let system_mode = verge.enable_system_proxy.as_ref().unwrap_or(&false); let tun_mode = verge.enable_tun_mode.as_ref().unwrap_or(&false); @@ -395,7 +390,7 @@ impl Tray { } #[cfg(not(target_os = "macos"))] - pub async fn update_icon(&self, verge: Option<&IVerge>) -> Result<()> { + pub async fn update_icon(&self, verge: &IVerge) -> Result<()> { if handle::Handle::global().is_exiting() { logging!(debug, Type::Tray, "应用正在退出,跳过托盘图标更新"); return Ok(()); @@ -415,11 +410,6 @@ impl Tray { } }; - let verge = match verge { - Some(v) => v, - None => &Config::verge().await.data_arc(), - }; - let system_mode = verge.enable_system_proxy.as_ref().unwrap_or(&false); let tun_mode = verge.enable_tun_mode.as_ref().unwrap_or(&false); @@ -510,8 +500,9 @@ impl Tray { logging!(debug, Type::Tray, "应用正在退出,跳过托盘局部更新"); return Ok(()); } + let verge = Config::verge().await.data_arc(); self.update_menu().await?; - self.update_icon(None).await?; + self.update_icon(&verge).await?; self.update_tooltip().await?; Ok(()) } diff --git a/src-tauri/src/feat/clash.rs b/src-tauri/src/feat/clash.rs index ce178c15e..43e76157a 100644 --- a/src-tauri/src/feat/clash.rs +++ b/src-tauri/src/feat/clash.rs @@ -82,7 +82,12 @@ pub async fn change_clash_mode(mode: String) { if clash_data.save_config().await.is_ok() { handle::Handle::refresh_clash(); logging_error!(Type::Tray, tray::Tray::global().update_menu().await); - logging_error!(Type::Tray, tray::Tray::global().update_icon(None).await); + logging_error!( + Type::Tray, + tray::Tray::global() + .update_icon(&Config::verge().await.data_arc()) + .await + ); } let is_auto_close_connection = Config::verge() diff --git a/src-tauri/src/feat/config.rs b/src-tauri/src/feat/config.rs index 33c11ea07..99c349bdb 100644 --- a/src-tauri/src/feat/config.rs +++ b/src-tauri/src/feat/config.rs @@ -22,7 +22,12 @@ pub async fn patch_clash(patch: Mapping) -> Result<()> { } else { if patch.get("mode").is_some() { logging_error!(Type::Tray, tray::Tray::global().update_menu().await); - logging_error!(Type::Tray, tray::Tray::global().update_icon(None).await); + logging_error!( + Type::Tray, + tray::Tray::global() + .update_icon(&Config::verge().await.data_arc()) + .await + ); } Config::runtime() .await @@ -213,7 +218,7 @@ async fn process_terminated_flags(update_flags: i32, patch: &IVerge) -> Result<( } if (update_flags & (UpdateFlags::SystrayIcon as i32)) != 0 { tray::Tray::global() - .update_icon(Some(&Config::verge().await.latest_arc())) + .update_icon(&Config::verge().await.data_arc()) .await?; } if (update_flags & (UpdateFlags::SystrayTooltip as i32)) != 0 { diff --git a/src-tauri/src/utils/init.rs b/src-tauri/src/utils/init.rs index cbeea286a..66503ff63 100644 --- a/src-tauri/src/utils/init.rs +++ b/src-tauri/src/utils/init.rs @@ -31,7 +31,7 @@ pub async fn init_logger() -> Result<()> { // TODO 提供 runtime 级别实时修改 let (log_level, log_max_size, log_max_count) = { let verge_guard = Config::verge().await; - let verge = verge_guard.latest_arc(); + let verge = verge_guard.data_arc(); ( verge.get_log_level(), verge.app_log_max_size.unwrap_or(128), @@ -89,7 +89,7 @@ pub async fn init_logger() -> Result<()> { pub async fn sidecar_writer() -> Result { let (log_max_size, log_max_count) = { let verge_guard = Config::verge().await; - let verge = verge_guard.latest_arc(); + let verge = verge_guard.data_arc(); ( verge.app_log_max_size.unwrap_or(128), verge.app_log_max_count.unwrap_or(8), @@ -117,7 +117,7 @@ pub async fn sidecar_writer() -> Result { pub async fn service_writer_config() -> Result { let (log_max_size, log_max_count) = { let verge_guard = Config::verge().await; - let verge = verge_guard.latest_arc(); + let verge = verge_guard.data_arc(); ( verge.app_log_max_size.unwrap_or(128), verge.app_log_max_count.unwrap_or(8), @@ -142,7 +142,7 @@ pub async fn delete_log() -> Result<()> { let auto_log_clean = { let verge = Config::verge().await; - let verge = verge.latest_arc(); + let verge = verge.data_arc(); verge.auto_log_clean.unwrap_or(0) }; @@ -517,7 +517,7 @@ pub async fn startup_script() -> Result<()> { let app_handle = handle::Handle::app_handle(); let script_path = { let verge = Config::verge().await; - let verge = verge.latest_arc(); + let verge = verge.data_arc(); verge.startup_script.clone().unwrap_or_else(|| "".into()) }; diff --git a/src-tauri/src/utils/network.rs b/src-tauri/src/utils/network.rs index c4598a7b9..400bf21c3 100644 --- a/src-tauri/src/utils/network.rs +++ b/src-tauri/src/utils/network.rs @@ -159,10 +159,10 @@ impl NetworkManager { ProxyType::None => None, ProxyType::Localhost => { let port = { - let verge_port = Config::verge().await.latest_arc().verge_mixed_port; + let verge_port = Config::verge().await.data_arc().verge_mixed_port; match verge_port { Some(port) => port, - None => Config::clash().await.latest_arc().get_mixed_port(), + None => Config::clash().await.data_arc().get_mixed_port(), } }; let proxy_scheme = format!("http://127.0.0.1:{port}"); diff --git a/src-tauri/src/utils/server.rs b/src-tauri/src/utils/server.rs index f4d7ea6ad..4defbd759 100644 --- a/src-tauri/src/utils/server.rs +++ b/src-tauri/src/utils/server.rs @@ -91,15 +91,15 @@ pub fn embed_server() { let clash_config = Config::clash().await; let pac_content = verge_config - .latest_arc() + .data_arc() .pac_file_content .clone() .unwrap_or_else(|| DEFAULT_PAC.into()); let pac_port = verge_config - .latest_arc() + .data_arc() .verge_mixed_port - .unwrap_or_else(|| clash_config.latest_arc().get_mixed_port()); + .unwrap_or_else(|| clash_config.data_arc().get_mixed_port()); let pac = warp::path!("commands" / "pac").map(move || { let processed_content = pac_content.replace("%mixed-port%", &format!("{pac_port}"));