mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-04-13 13:30:31 +08:00
fix(proxy): avoid reporting requested state when system proxy toggle fails (#6699)
This commit is contained in:
parent
d95265f08c
commit
0980a891a7
@ -9,21 +9,21 @@ use tauri_plugin_clipboard_manager::ClipboardExt as _;
|
|||||||
/// Toggle system proxy on/off
|
/// Toggle system proxy on/off
|
||||||
pub async fn toggle_system_proxy() -> bool {
|
pub async fn toggle_system_proxy() -> bool {
|
||||||
let verge = Config::verge().await;
|
let verge = Config::verge().await;
|
||||||
let enable = verge.latest_arc().enable_system_proxy.unwrap_or(false);
|
let current = verge.latest_arc().enable_system_proxy.unwrap_or(false);
|
||||||
let auto_close_connection = verge.latest_arc().auto_close_connection.unwrap_or(false);
|
let auto_close_connection = verge.latest_arc().auto_close_connection.unwrap_or(false);
|
||||||
|
|
||||||
// 如果当前系统代理即将关闭,且自动关闭连接设置为true,则关闭所有连接
|
// 如果当前系统代理即将关闭,且自动关闭连接设置为true,则关闭所有连接
|
||||||
if enable
|
if current
|
||||||
&& auto_close_connection
|
&& auto_close_connection
|
||||||
&& let Err(err) = handle::Handle::mihomo().await.close_all_connections().await
|
&& let Err(err) = handle::Handle::mihomo().await.close_all_connections().await
|
||||||
{
|
{
|
||||||
logging!(error, Type::ProxyMode, "Failed to close all connections: {err}");
|
logging!(error, Type::ProxyMode, "Failed to close all connections: {err}");
|
||||||
}
|
}
|
||||||
|
|
||||||
let enable = !enable;
|
let requested = !current;
|
||||||
let patch_result = super::patch_verge(
|
let patch_result = super::patch_verge(
|
||||||
&IVerge {
|
&IVerge {
|
||||||
enable_system_proxy: Some(enable),
|
enable_system_proxy: Some(requested),
|
||||||
..IVerge::default()
|
..IVerge::default()
|
||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
@ -31,11 +31,15 @@ pub async fn toggle_system_proxy() -> bool {
|
|||||||
.await;
|
.await;
|
||||||
|
|
||||||
match patch_result {
|
match patch_result {
|
||||||
Ok(_) => handle::Handle::refresh_verge(),
|
Ok(_) => {
|
||||||
Err(err) => logging!(error, Type::ProxyMode, "{err}"),
|
handle::Handle::refresh_verge();
|
||||||
|
requested
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
logging!(error, Type::ProxyMode, "{err}");
|
||||||
|
current
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enable
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Toggle TUN mode on/off
|
/// Toggle TUN mode on/off
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user