import { InputAdornment, List, ListItem, ListItemText, TextField, Typography, } from '@mui/material' import { useLockFn } from 'ahooks' import type { Ref } from 'react' import { useImperativeHandle, useState } from 'react' import { useTranslation } from 'react-i18next' import { BaseDialog, DialogRef, Switch, TooltipIcon } from '@/components/base' import { useVerge } from '@/hooks/use-verge' import { entry_lightweight_mode } from '@/services/cmds' import { showNotice } from '@/services/notice-service' export function LiteModeViewer({ ref }: { ref?: 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?.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) { showNotice.error(err) } }) return ( setOpen(false)} onCancel={() => setOpen(false)} onOk={onSave} > await entry_lightweight_mode()} > {t('shared.actions.enable')} setValues((v) => ({ ...v, autoEnterLiteMode: c })) } sx={{ marginLeft: 'auto' }} /> {values.autoEnterLiteMode && ( <> setValues((v) => ({ ...v, autoEnterLiteModeDelay: parseInt(e.target.value) || 1, })) } slotProps={{ input: { endAdornment: ( {t('shared.units.minutes')} ), }, }} /> {t('settings.modals.liteMode.messages.autoEnterHint', { n: values.autoEnterLiteModeDelay, })} )} ) }