From 0980a891a73a3b334023b73b2e87d4e7bbd82188 Mon Sep 17 00:00:00 2001 From: F-seeeye Date: Thu, 2 Apr 2026 21:34:47 +0800 Subject: [PATCH] fix(proxy): avoid reporting requested state when system proxy toggle fails (#6699) --- src-tauri/src/feat/proxy.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src-tauri/src/feat/proxy.rs b/src-tauri/src/feat/proxy.rs index 48a6e419d..1abcd9d83 100644 --- a/src-tauri/src/feat/proxy.rs +++ b/src-tauri/src/feat/proxy.rs @@ -9,21 +9,21 @@ use tauri_plugin_clipboard_manager::ClipboardExt as _; /// Toggle system proxy on/off pub async fn toggle_system_proxy() -> bool { 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); // 如果当前系统代理即将关闭,且自动关闭连接设置为true,则关闭所有连接 - if enable + if current && auto_close_connection && let Err(err) = handle::Handle::mihomo().await.close_all_connections().await { logging!(error, Type::ProxyMode, "Failed to close all connections: {err}"); } - let enable = !enable; + let requested = !current; let patch_result = super::patch_verge( &IVerge { - enable_system_proxy: Some(enable), + enable_system_proxy: Some(requested), ..IVerge::default() }, false, @@ -31,11 +31,15 @@ pub async fn toggle_system_proxy() -> bool { .await; match patch_result { - Ok(_) => handle::Handle::refresh_verge(), - Err(err) => logging!(error, Type::ProxyMode, "{err}"), + Ok(_) => { + handle::Handle::refresh_verge(); + requested + } + Err(err) => { + logging!(error, Type::ProxyMode, "{err}"); + current + } } - - enable } /// Toggle TUN mode on/off