import React, { useRef } from 'react' import { useTranslation } from 'react-i18next' import { DialogRef, Switch, TooltipIcon } from '@/components/base' import ProxyControlSwitches from '@/components/shared/proxy-control-switches' import { useVerge } from '@/hooks/use-verge' import { GuardState } from './mods/guard-state' import { SettingList, SettingItem } from './mods/setting-comp' import { SysproxyViewer } from './mods/sysproxy-viewer' import { TunViewer } from './mods/tun-viewer' interface Props { onError?: (err: Error) => void } const SettingSystem = ({ onError }: Props) => { const { t } = useTranslation() const { verge, mutateVerge, patchVerge } = useVerge() const { enable_auto_launch, enable_silent_start } = verge ?? {} const sysproxyRef = useRef(null) const tunRef = useRef(null) const onSwitchFormat = ( _e: React.ChangeEvent, value: boolean, ) => value const onChangeData = (patch: Partial) => { mutateVerge({ ...verge, ...patch }, false) } return ( { onChangeData({ enable_auto_launch: e }) }} onGuard={async (e) => { try { // 先触发UI更新立即看到反馈 onChangeData({ enable_auto_launch: e }) await patchVerge({ enable_auto_launch: e }) return Promise.resolve() } catch (error) { // 如果出错,恢复原始状态 onChangeData({ enable_auto_launch: !e }) return Promise.reject(error) } }} > } > onChangeData({ enable_silent_start: e })} onGuard={(e) => patchVerge({ enable_silent_start: e })} > ) } export default SettingSystem