refactor: update update_icon method to require a non-optional verge reference and adjust related calls (#5417)

This commit is contained in:
Tunglies
2025-11-12 07:36:24 +08:00
committed by GitHub
parent 92a3f0cae3
commit f3a3d0e8b0
6 changed files with 27 additions and 26 deletions

View File

@@ -348,7 +348,7 @@ impl Tray {
/// 更新托盘图标 /// 更新托盘图标
#[cfg(target_os = "macos")] #[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() { if handle::Handle::global().is_exiting() {
logging!(debug, Type::Tray, "应用正在退出,跳过托盘图标更新"); logging!(debug, Type::Tray, "应用正在退出,跳过托盘图标更新");
return Ok(()); 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 system_mode = verge.enable_system_proxy.as_ref().unwrap_or(&false);
let tun_mode = verge.enable_tun_mode.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"))] #[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() { if handle::Handle::global().is_exiting() {
logging!(debug, Type::Tray, "应用正在退出,跳过托盘图标更新"); logging!(debug, Type::Tray, "应用正在退出,跳过托盘图标更新");
return Ok(()); 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 system_mode = verge.enable_system_proxy.as_ref().unwrap_or(&false);
let tun_mode = verge.enable_tun_mode.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, "应用正在退出,跳过托盘局部更新"); logging!(debug, Type::Tray, "应用正在退出,跳过托盘局部更新");
return Ok(()); return Ok(());
} }
let verge = Config::verge().await.data_arc();
self.update_menu().await?; self.update_menu().await?;
self.update_icon(None).await?; self.update_icon(&verge).await?;
self.update_tooltip().await?; self.update_tooltip().await?;
Ok(()) Ok(())
} }

View File

@@ -82,7 +82,12 @@ pub async fn change_clash_mode(mode: String) {
if clash_data.save_config().await.is_ok() { if clash_data.save_config().await.is_ok() {
handle::Handle::refresh_clash(); handle::Handle::refresh_clash();
logging_error!(Type::Tray, tray::Tray::global().update_menu().await); 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() let is_auto_close_connection = Config::verge()

View File

@@ -22,7 +22,12 @@ pub async fn patch_clash(patch: Mapping) -> Result<()> {
} else { } else {
if patch.get("mode").is_some() { if patch.get("mode").is_some() {
logging_error!(Type::Tray, tray::Tray::global().update_menu().await); 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() Config::runtime()
.await .await
@@ -213,7 +218,7 @@ async fn process_terminated_flags(update_flags: i32, patch: &IVerge) -> Result<(
} }
if (update_flags & (UpdateFlags::SystrayIcon as i32)) != 0 { if (update_flags & (UpdateFlags::SystrayIcon as i32)) != 0 {
tray::Tray::global() tray::Tray::global()
.update_icon(Some(&Config::verge().await.latest_arc())) .update_icon(&Config::verge().await.data_arc())
.await?; .await?;
} }
if (update_flags & (UpdateFlags::SystrayTooltip as i32)) != 0 { if (update_flags & (UpdateFlags::SystrayTooltip as i32)) != 0 {

View File

@@ -31,7 +31,7 @@ pub async fn init_logger() -> Result<()> {
// TODO 提供 runtime 级别实时修改 // TODO 提供 runtime 级别实时修改
let (log_level, log_max_size, log_max_count) = { let (log_level, log_max_size, log_max_count) = {
let verge_guard = Config::verge().await; let verge_guard = Config::verge().await;
let verge = verge_guard.latest_arc(); let verge = verge_guard.data_arc();
( (
verge.get_log_level(), verge.get_log_level(),
verge.app_log_max_size.unwrap_or(128), verge.app_log_max_size.unwrap_or(128),
@@ -89,7 +89,7 @@ pub async fn init_logger() -> Result<()> {
pub async fn sidecar_writer() -> Result<FileLogWriter> { pub async fn sidecar_writer() -> Result<FileLogWriter> {
let (log_max_size, log_max_count) = { let (log_max_size, log_max_count) = {
let verge_guard = Config::verge().await; 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_size.unwrap_or(128),
verge.app_log_max_count.unwrap_or(8), verge.app_log_max_count.unwrap_or(8),
@@ -117,7 +117,7 @@ pub async fn sidecar_writer() -> Result<FileLogWriter> {
pub async fn service_writer_config() -> Result<WriterConfig> { pub async fn service_writer_config() -> Result<WriterConfig> {
let (log_max_size, log_max_count) = { let (log_max_size, log_max_count) = {
let verge_guard = Config::verge().await; 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_size.unwrap_or(128),
verge.app_log_max_count.unwrap_or(8), verge.app_log_max_count.unwrap_or(8),
@@ -142,7 +142,7 @@ pub async fn delete_log() -> Result<()> {
let auto_log_clean = { let auto_log_clean = {
let verge = Config::verge().await; let verge = Config::verge().await;
let verge = verge.latest_arc(); let verge = verge.data_arc();
verge.auto_log_clean.unwrap_or(0) 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 app_handle = handle::Handle::app_handle();
let script_path = { let script_path = {
let verge = Config::verge().await; let verge = Config::verge().await;
let verge = verge.latest_arc(); let verge = verge.data_arc();
verge.startup_script.clone().unwrap_or_else(|| "".into()) verge.startup_script.clone().unwrap_or_else(|| "".into())
}; };

View File

@@ -159,10 +159,10 @@ impl NetworkManager {
ProxyType::None => None, ProxyType::None => None,
ProxyType::Localhost => { ProxyType::Localhost => {
let port = { 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 { match verge_port {
Some(port) => 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}"); let proxy_scheme = format!("http://127.0.0.1:{port}");

View File

@@ -91,15 +91,15 @@ pub fn embed_server() {
let clash_config = Config::clash().await; let clash_config = Config::clash().await;
let pac_content = verge_config let pac_content = verge_config
.latest_arc() .data_arc()
.pac_file_content .pac_file_content
.clone() .clone()
.unwrap_or_else(|| DEFAULT_PAC.into()); .unwrap_or_else(|| DEFAULT_PAC.into());
let pac_port = verge_config let pac_port = verge_config
.latest_arc() .data_arc()
.verge_mixed_port .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 pac = warp::path!("commands" / "pac").map(move || {
let processed_content = pac_content.replace("%mixed-port%", &format!("{pac_port}")); let processed_content = pac_content.replace("%mixed-port%", &format!("{pac_port}"));