import { List, ListItem, ListItemText, TextField, Typography, InputAdornment, } from "@mui/material"; import { useLockFn } from "ahooks"; import { useImperativeHandle, useState } from "react"; import { useTranslation } from "react-i18next"; import { BaseDialog, Switch } from "@/components/base"; import { TooltipIcon } from "@/components/base/base-tooltip-icon"; import { useVerge } from "@/hooks/use-verge"; import { entry_lightweight_mode } from "@/services/cmds"; import { showNotice } from "@/services/noticeService"; export const LiteModeViewer = ({ ref, ...props }) => { const { t } = useTranslation(); const { verge, patchVerge } = useVerge(); const [open, setOpen] = useState(false); const [values, setValues] = useState({ autoEnterLiteMode: false, autoEnterLiteModeDelay: 10, // 默认10分钟 }); useImperativeHandle(ref, () => ({ open: () => { setOpen(true); setValues({ autoEnterLiteMode: verge?.enable_auto_light_weight_mode ?? false, autoEnterLiteModeDelay: verge?.auto_light_weight_minutes ?? 10, }); }, close: () => setOpen(false), })); const onSave = useLockFn(async () => { try { await patchVerge({ enable_auto_light_weight_mode: values.autoEnterLiteMode, auto_light_weight_minutes: values.autoEnterLiteModeDelay, }); setOpen(false); } catch (err: any) { showNotice("error", err.message || err.toString()); } }); return ( setOpen(false)} onCancel={() => setOpen(false)} onOk={onSave} > await entry_lightweight_mode()} > {t("Enable")} setValues((v) => ({ ...v, autoEnterLiteMode: c })) } sx={{ marginLeft: "auto" }} /> {values.autoEnterLiteMode && ( <> setValues((v) => ({ ...v, autoEnterLiteModeDelay: parseInt(e.target.value) || 1, })) } slotProps={{ input: { endAdornment: ( {t("mins")} ), }, }} /> {t( "When closing the window, LightWeight Mode will be automatically activated after _n minutes", { n: values.autoEnterLiteModeDelay }, )} )} ); };