From 6ab920ddbdce86f5b900072d47781916422570a8 Mon Sep 17 00:00:00 2001 From: ezequielnick <107352853+ezequielnick@users.noreply.github.com> Date: Mon, 3 Mar 2025 10:19:55 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E5=BC=80=E5=85=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/sider/sysproxy-switcher.tsx | 7 ++++++- .../src/pages/{syspeoxy.tsx => sysproxy.tsx} | 13 ++++++++++--- src/renderer/src/routes/index.tsx | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) rename src/renderer/src/pages/{syspeoxy.tsx => sysproxy.tsx} (96%) diff --git a/src/renderer/src/components/sider/sysproxy-switcher.tsx b/src/renderer/src/components/sider/sysproxy-switcher.tsx index 2318cdd..e312cac 100644 --- a/src/renderer/src/components/sider/sysproxy-switcher.tsx +++ b/src/renderer/src/components/sider/sysproxy-switcher.tsx @@ -34,12 +34,17 @@ const SysproxySwitcher: React.FC = (props) => { }) const transform = tf ? { x: tf.x, y: tf.y, scaleX: 1, scaleY: 1 } : null const onChange = async (enable: boolean): Promise => { + const previousState = !enable + + // 立即更新UI try { - await triggerSysProxy(enable) await patchAppConfig({ sysProxy: { enable } }) + await triggerSysProxy(enable) + window.electron.ipcRenderer.send('updateFloatingWindow') window.electron.ipcRenderer.send('updateTrayMenu') } catch (e) { + await patchAppConfig({ sysProxy: { enable: previousState } }) alert(e) } } diff --git a/src/renderer/src/pages/syspeoxy.tsx b/src/renderer/src/pages/sysproxy.tsx similarity index 96% rename from src/renderer/src/pages/syspeoxy.tsx rename to src/renderer/src/pages/sysproxy.tsx index d2bdedb..f9a8aaa 100644 --- a/src/renderer/src/pages/syspeoxy.tsx +++ b/src/renderer/src/pages/sysproxy.tsx @@ -92,14 +92,21 @@ const Sysproxy: React.FC = () => { } const onSave = async (): Promise => { - // check valid TODO - await patchAppConfig({ sysProxy: values }) + setChanged(false) + + // 保存当前的开关状态,以便在失败时恢复 + const previousState = values.enable + try { + await patchAppConfig({ sysProxy: values }) await triggerSysProxy(true) + await patchAppConfig({ sysProxy: { enable: true } }) - setChanged(false) } catch (e) { + setValues({ ...values, enable: previousState }) + setChanged(true) alert(e) + await patchAppConfig({ sysProxy: { enable: false } }) } } diff --git a/src/renderer/src/routes/index.tsx b/src/renderer/src/routes/index.tsx index 232ff79..540b5da 100644 --- a/src/renderer/src/routes/index.tsx +++ b/src/renderer/src/routes/index.tsx @@ -7,7 +7,7 @@ import Profiles from '@renderer/pages/profiles' import Logs from '@renderer/pages/logs' import Connections from '@renderer/pages/connections' import Mihomo from '@renderer/pages/mihomo' -import Sysproxy from '@renderer/pages/syspeoxy' +import Sysproxy from '@renderer/pages/sysproxy' import Tun from '@renderer/pages/tun' import Resources from '@renderer/pages/resources' import DNS from '@renderer/pages/dns'