import { forwardRef, useImperativeHandle, useState } from "react"; import { useLockFn } from "ahooks"; import { useTranslation } from "react-i18next"; import { List, ListItem, ListItemText, TextField, Typography, InputAdornment, } from "@mui/material"; import { useVerge } from "@/hooks/use-verge"; import { BaseDialog, DialogRef, Notice, Switch } from "@/components/base"; import { TooltipIcon } from "@/components/base/base-tooltip-icon"; export const LiteModeViewer = forwardRef((props, ref) => { 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?.auto_enter_lite_mode ?? false, autoEnterLiteModeDelay: verge?.auto_enter_lite_mode_delay ?? 10, }); }, close: () => setOpen(false), })); const onEnterLiteMode = useLockFn(async () => { try { await patchVerge({ enable_lite_mode: true }); setOpen(false); } catch (err: any) { Notice.error(err.message || err.toString()); } }); const onSave = useLockFn(async () => { try { await patchVerge({ auto_enter_lite_mode: values.autoEnterLiteMode, auto_enter_lite_mode_delay: values.autoEnterLiteModeDelay, }); setOpen(false); } catch (err: any) { Notice.error(err.message || err.toString()); } }); return ( setOpen(false)} onCancel={() => setOpen(false)} onOk={onSave} > {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, Lite Mode will be automatically activated after _n minutes", { n: values.autoEnterLiteModeDelay })} )} ); });