perf: 优化系统代理开关逻辑

This commit is contained in:
ezequielnick 2025-03-03 10:19:55 +08:00
parent 59bd7e8a08
commit 6ab920ddbd
3 changed files with 17 additions and 5 deletions

View File

@ -34,12 +34,17 @@ const SysproxySwitcher: React.FC<Props> = (props) => {
}) })
const transform = tf ? { x: tf.x, y: tf.y, scaleX: 1, scaleY: 1 } : null const transform = tf ? { x: tf.x, y: tf.y, scaleX: 1, scaleY: 1 } : null
const onChange = async (enable: boolean): Promise<void> => { const onChange = async (enable: boolean): Promise<void> => {
const previousState = !enable
// 立即更新UI
try { try {
await triggerSysProxy(enable)
await patchAppConfig({ sysProxy: { enable } }) await patchAppConfig({ sysProxy: { enable } })
await triggerSysProxy(enable)
window.electron.ipcRenderer.send('updateFloatingWindow') window.electron.ipcRenderer.send('updateFloatingWindow')
window.electron.ipcRenderer.send('updateTrayMenu') window.electron.ipcRenderer.send('updateTrayMenu')
} catch (e) { } catch (e) {
await patchAppConfig({ sysProxy: { enable: previousState } })
alert(e) alert(e)
} }
} }

View File

@ -92,14 +92,21 @@ const Sysproxy: React.FC = () => {
} }
const onSave = async (): Promise<void> => { const onSave = async (): Promise<void> => {
// check valid TODO setChanged(false)
await patchAppConfig({ sysProxy: values })
// 保存当前的开关状态,以便在失败时恢复
const previousState = values.enable
try { try {
await patchAppConfig({ sysProxy: values })
await triggerSysProxy(true) await triggerSysProxy(true)
await patchAppConfig({ sysProxy: { enable: true } }) await patchAppConfig({ sysProxy: { enable: true } })
setChanged(false)
} catch (e) { } catch (e) {
setValues({ ...values, enable: previousState })
setChanged(true)
alert(e) alert(e)
await patchAppConfig({ sysProxy: { enable: false } }) await patchAppConfig({ sysProxy: { enable: false } })
} }
} }

View File

@ -7,7 +7,7 @@ import Profiles from '@renderer/pages/profiles'
import Logs from '@renderer/pages/logs' import Logs from '@renderer/pages/logs'
import Connections from '@renderer/pages/connections' import Connections from '@renderer/pages/connections'
import Mihomo from '@renderer/pages/mihomo' 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 Tun from '@renderer/pages/tun'
import Resources from '@renderer/pages/resources' import Resources from '@renderer/pages/resources'
import DNS from '@renderer/pages/dns' import DNS from '@renderer/pages/dns'