import { forwardRef, useImperativeHandle, useState } from "react"; import { useLockFn } from "ahooks"; import { useTranslation } from "react-i18next"; import { List, ListItem, ListItemText, MenuItem, Select, TextField, } from "@mui/material"; import { useVerge } from "@/hooks/use-verge"; import { BaseDialog, DialogRef, Notice, Switch } 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({ appLogLevel: "info", autoCloseConnection: true, enableBuiltinEnhanced: true, proxyLayoutColumn: 6, defaultLatencyTest: "", autoLogClean: 0, defaultLatencyTimeout: 10000, }); useImperativeHandle(ref, () => ({ open: () => { setOpen(true); setValues({ appLogLevel: verge?.app_log_level ?? "info", autoCloseConnection: verge?.auto_close_connection ?? true, enableBuiltinEnhanced: verge?.enable_builtin_enhanced ?? true, proxyLayoutColumn: verge?.proxy_layout_column || 6, defaultLatencyTest: verge?.default_latency_test || "", autoLogClean: verge?.auto_log_clean || 0, defaultLatencyTimeout: verge?.default_latency_timeout || 10000, }); }, close: () => setOpen(false), })); const onSave = useLockFn(async () => { try { await patchVerge({ app_log_level: values.appLogLevel, auto_close_connection: values.autoCloseConnection, enable_builtin_enhanced: values.enableBuiltinEnhanced, proxy_layout_column: values.proxyLayoutColumn, default_latency_test: values.defaultLatencyTest, default_latency_timeout: values.defaultLatencyTimeout, auto_log_clean: values.autoLogClean as any, }); 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 })) } /> setValues((v) => ({ ...v, defaultLatencyTimeout: parseInt(e.target.value), })) } /> ); });