import { forwardRef, useImperativeHandle, useState } from "react"; import { useLockFn } from "ahooks"; import { useTranslation } from "react-i18next"; import { List, ListItem, ListItemText, MenuItem, Select, Switch, TextField, } from "@mui/material"; import { useVerge } from "@/hooks/use-verge"; import { BaseDialog, DialogRef, Notice } from "@/components/base"; export const MiscViewer = forwardRef((props, ref) => { const { t } = useTranslation(); const { verge, patchVerge } = useVerge(); const [open, setOpen] = useState(false); const [values, setValues] = useState({ autoCloseConnection: false, enableBuiltinEnhanced: true, proxyLayoutColumn: 1, defaultLatencyTest: "", }); useImperativeHandle(ref, () => ({ open: () => { setOpen(true); setValues({ autoCloseConnection: verge?.auto_close_connection ?? false, enableBuiltinEnhanced: verge?.enable_builtin_enhanced ?? true, proxyLayoutColumn: verge?.proxy_layout_column || 1, defaultLatencyTest: verge?.default_latency_test || "", }); }, close: () => setOpen(false), })); const onSave = useLockFn(async () => { try { await patchVerge({ auto_close_connection: values.autoCloseConnection, enable_builtin_enhanced: values.enableBuiltinEnhanced, proxy_layout_column: values.proxyLayoutColumn, default_latency_test: values.defaultLatencyTest, }); setOpen(false); } catch (err: any) { Notice.error(err.message || err.toString()); } }); return ( setOpen(false)} onCancel={() => setOpen(false)} onOk={onSave} > setValues((v) => ({ ...v, autoCloseConnection: c })) } /> setValues((v) => ({ ...v, enableBuiltinEnhanced: c })) } /> setValues((v) => ({ ...v, defaultLatencyTest: e.target.value })) } /> ); });