import { useEffect, useState } from "react"; import { useLockFn } from "ahooks"; import { useTranslation } from "react-i18next"; import { Button, Dialog, DialogActions, DialogContent, DialogTitle, List, ListItem, ListItemText, Switch, TextField, } from "@mui/material"; import { ModalHandler } from "@/hooks/use-modal-handler"; import { useVergeConfig } from "@/hooks/use-verge-config"; import Notice from "@/components/base/base-notice"; interface Props { handler: ModalHandler; } const MiscViewer = ({ handler }: Props) => { const { t } = useTranslation(); const { data, patchVerge } = useVergeConfig(); const [open, setOpen] = useState(false); const [values, setValues] = useState({ autoCloseConnection: false, defaultLatencyTest: "", }); if (handler) { handler.current = { open: () => setOpen(true), close: () => setOpen(false), }; } useEffect(() => { if (open) { setValues({ autoCloseConnection: data?.auto_close_connection || false, defaultLatencyTest: data?.default_latency_test || "", }); } }, [open, data]); const onSave = useLockFn(async () => { try { await patchVerge({ auto_close_connection: values.autoCloseConnection, default_latency_test: values.defaultLatencyTest, }); setOpen(false); } catch (err: any) { Notice.error(err.message || err.toString()); } }); return ( setOpen(false)}> {t("Miscellaneous")} setValues((v) => ({ ...v, autoCloseConnection: c })) } /> setValues((v) => ({ ...v, defaultLatencyTest: e.target.value })) } /> ); }; export default MiscViewer;