mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 00:35:38 +08:00
refactor: optimize reference handling in profile and i18n modules
This commit is contained in:
@@ -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((
|
||||
|
||||
@@ -60,43 +60,32 @@ pub async fn toggle_tun_mode(not_save_file: Option<bool>) {
|
||||
|
||||
/// 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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user