Skip to content

Commit 6ab920d

Browse files
committed
perf: 优化系统代理开关逻辑
1 parent 59bd7e8 commit 6ab920d

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

src/renderer/src/components/sider/sysproxy-switcher.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,17 @@ const SysproxySwitcher: React.FC<Props> = (props) => {
3434
})
3535
const transform = tf ? { x: tf.x, y: tf.y, scaleX: 1, scaleY: 1 } : null
3636
const onChange = async (enable: boolean): Promise<void> => {
37+
const previousState = !enable
38+
39+
// 立即更新UI
3740
try {
38-
await triggerSysProxy(enable)
3941
await patchAppConfig({ sysProxy: { enable } })
42+
await triggerSysProxy(enable)
43+
4044
window.electron.ipcRenderer.send('updateFloatingWindow')
4145
window.electron.ipcRenderer.send('updateTrayMenu')
4246
} catch (e) {
47+
await patchAppConfig({ sysProxy: { enable: previousState } })
4348
alert(e)
4449
}
4550
}

src/renderer/src/pages/syspeoxy.tsx src/renderer/src/pages/sysproxy.tsx

+10-3
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,21 @@ const Sysproxy: React.FC = () => {
9292
}
9393

9494
const onSave = async (): Promise<void> => {
95-
// check valid TODO
96-
await patchAppConfig({ sysProxy: values })
95+
setChanged(false)
96+
97+
// 保存当前的开关状态,以便在失败时恢复
98+
const previousState = values.enable
99+
97100
try {
101+
await patchAppConfig({ sysProxy: values })
98102
await triggerSysProxy(true)
103+
99104
await patchAppConfig({ sysProxy: { enable: true } })
100-
setChanged(false)
101105
} catch (e) {
106+
setValues({ ...values, enable: previousState })
107+
setChanged(true)
102108
alert(e)
109+
103110
await patchAppConfig({ sysProxy: { enable: false } })
104111
}
105112
}

src/renderer/src/routes/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Profiles from '@renderer/pages/profiles'
77
import Logs from '@renderer/pages/logs'
88
import Connections from '@renderer/pages/connections'
99
import Mihomo from '@renderer/pages/mihomo'
10-
import Sysproxy from '@renderer/pages/syspeoxy'
10+
import Sysproxy from '@renderer/pages/sysproxy'
1111
import Tun from '@renderer/pages/tun'
1212
import Resources from '@renderer/pages/resources'
1313
import DNS from '@renderer/pages/dns'

0 commit comments

Comments
 (0)