import React, { useRef } from "react"; import { useTranslation } from "react-i18next"; import { mutate } from "swr"; 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 }); await mutate("getAutoLaunchStatus"); 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;