import { useCallback, useMemo, useState } from 'react'; import AccessTimeIcon from '@mui/icons-material/AccessTime'; import CancelIcon from '@mui/icons-material/Cancel'; import DeviceHubIcon from '@mui/icons-material/DeviceHub'; import ImportExportIcon from '@mui/icons-material/ImportExport'; import LockIcon from '@mui/icons-material/Lock'; import SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore'; import SettingsEthernetIcon from '@mui/icons-material/SettingsEthernet'; import SettingsInputAntennaIcon from '@mui/icons-material/SettingsInputAntenna'; import TuneIcon from '@mui/icons-material/Tune'; import ViewModuleIcon from '@mui/icons-material/ViewModule'; import { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, Divider, List } from '@mui/material'; import { API } from 'api/app'; import { dialogStyle } from 'CustomTheme'; import { useRequest } from 'alova/client'; import type { APIcall } from 'app/main/types'; import { SectionContent, useLayoutTitle } from 'components'; import ListMenuItem from 'components/layout/ListMenuItem'; import { useI18nContext } from 'i18n/i18n-react'; import SystemMonitor from '../status/SystemMonitor'; const Settings = () => { const { LL } = useI18nContext(); useLayoutTitle(LL.SETTINGS(0)); const [confirmFactoryReset, setConfirmFactoryReset] = useState(false); const [restarting, setRestarting] = useState(); const { send: sendAPI } = useRequest((data: APIcall) => API(data), { immediate: false }); const doFormat = useCallback(async () => { await sendAPI({ device: 'system', cmd: 'format', id: 0 }).then(() => { setRestarting(true); setConfirmFactoryReset(false); }); }, [sendAPI]); const handleFactoryResetClose = useCallback(() => { setConfirmFactoryReset(false); }, []); const handleFactoryResetClick = useCallback(() => { setConfirmFactoryReset(true); }, []); const content = useMemo(() => { return ( <> {LL.FACTORY_RESET()} {LL.SYSTEM_FACTORY_TEXT_DIALOG()} ); }, [ LL, handleFactoryResetClick, handleFactoryResetClose, doFormat, confirmFactoryReset, restarting ]); return {restarting ? : content}; }; export default Settings;