From a1a9c2b7bb076e7532c882599e052d28e5b7eca7 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Sun, 30 Nov 2025 23:00:16 +0800 Subject: [PATCH] refactor: optimize reference handling in profile and i18n modules --- src-tauri/src/feat/profile.rs | 2 +- src-tauri/src/feat/proxy.rs | 51 ++++++++++++++--------------------- src-tauri/src/utils/i18n.rs | 4 +-- 3 files changed, 23 insertions(+), 34 deletions(-) diff --git a/src-tauri/src/feat/profile.rs b/src-tauri/src/feat/profile.rs index 6fc78ca6e..932cafdd7 100644 --- a/src-tauri/src/feat/profile.rs +++ b/src-tauri/src/feat/profile.rs @@ -118,7 +118,7 @@ async fn should_update_profile( "[订阅更新] {} 是远程订阅,URL: {}", uid, item.url - .clone() + .as_ref() .ok_or_else(|| anyhow::anyhow!("Profile URL is None"))? ); Ok(Some(( diff --git a/src-tauri/src/feat/proxy.rs b/src-tauri/src/feat/proxy.rs index 87494319d..3f2cadc05 100644 --- a/src-tauri/src/feat/proxy.rs +++ b/src-tauri/src/feat/proxy.rs @@ -60,43 +60,32 @@ pub async fn toggle_tun_mode(not_save_file: Option) { /// Copy proxy environment variables to clipboard pub async fn copy_clash_env() { - // 从环境变量获取IP地址,如果没有则从配置中获取 proxy_host,默认为 127.0.0.1 - let clash_verge_rev_ip = match env::var("CLASH_VERGE_REV_IP") { - Ok(ip) => ip.into(), - Err(_) => Config::verge() - .await - .latest_arc() - .proxy_host - .clone() - .unwrap_or_else(|| "127.0.0.1".into()), - }; + let env_ip = env::var("CLASH_VERGE_REV_IP").ok(); + let verge_cfg = Config::verge().await.latest_arc(); + let ip = env_ip + .as_deref() + .unwrap_or_else(|| verge_cfg.proxy_host.as_deref().unwrap_or("127.0.0.1")); let app_handle = handle::Handle::app_handle(); - let port = { - Config::verge() - .await - .latest_arc() - .verge_mixed_port - .unwrap_or(7897) - }; - let http_proxy = format!("http://{clash_verge_rev_ip}:{port}"); - let socks5_proxy = format!("socks5://{clash_verge_rev_ip}:{port}"); + let port = verge_cfg.verge_mixed_port.unwrap_or(7897); + let http_proxy = format!("http://{ip}:{port}"); + let socks5_proxy = format!("socks5://{ip}:{port}"); - let cliboard = app_handle.clipboard(); - let env_type = { Config::verge().await.latest_arc().env_type.clone() }; - let env_type = match env_type { - Some(env_type) => env_type, - None => { - #[cfg(not(target_os = "windows"))] - let default = "bash"; - #[cfg(target_os = "windows")] - let default = "powershell"; + let clipboard = app_handle.clipboard(); - default.into() + let default_env = { + #[cfg(not(target_os = "windows"))] + { + "bash" + } + #[cfg(target_os = "windows")] + { + "powershell" } }; + let env_type = verge_cfg.env_type.as_deref().unwrap_or(default_env); - let export_text = match env_type.as_str() { + let export_text = match env_type { "bash" => format!( "export https_proxy={http_proxy} http_proxy={http_proxy} all_proxy={socks5_proxy}" ), @@ -118,7 +107,7 @@ pub async fn copy_clash_env() { } }; - if cliboard.write_text(export_text).is_err() { + if clipboard.write_text(&export_text).is_err() { logging!(error, Type::ProxyMode, "Failed to write to clipboard"); } } diff --git a/src-tauri/src/utils/i18n.rs b/src-tauri/src/utils/i18n.rs index 057908283..1bd99319e 100644 --- a/src-tauri/src/utils/i18n.rs +++ b/src-tauri/src/utils/i18n.rs @@ -82,9 +82,9 @@ pub async fn current_language() -> String { .await .latest_arc() .language - .clone() + .as_ref() .filter(|lang| !lang.is_empty()) - .and_then(|lang| resolve_supported_language(&lang)) + .and_then(|lang| resolve_supported_language(lang)) .unwrap_or_else(system_language) }