mirror of
https://gh.catmak.name/https://github.com/mihomo-party-org/mihomo-party
synced 2025-12-26 20:50:30 +08:00
perf: 优化系统代理开关逻辑
This commit is contained in:
parent
59bd7e8a08
commit
6ab920ddbd
@ -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 onChange = async (enable: boolean): Promise<void> => {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,14 +92,21 @@ const Sysproxy: React.FC = () => {
|
||||
}
|
||||
|
||||
const onSave = async (): Promise<void> => {
|
||||
// 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 } })
|
||||
}
|
||||
}
|
||||
@ -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'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user