import { FC, useState } from 'react'; import { ValidateFieldsError } from 'async-validator'; import { range } from 'lodash'; import { Button, Checkbox, MenuItem } from '@mui/material'; import SaveIcon from '@mui/icons-material/Save'; import { createAPSettingsValidator, validate } from '../../validators'; import { BlockFormControlLabel, ButtonRow, FormLoader, SectionContent, ValidatedPasswordField, ValidatedTextField } from '../../components'; import { APProvisionMode, APSettings } from '../../types'; import { numberValue, updateValue, useRest } from '../../utils'; import * as APApi from '../../api/ap'; import { useI18nContext } from '../../i18n/i18n-react'; export const isAPEnabled = ({ provision_mode }: APSettings) => { return provision_mode === APProvisionMode.AP_MODE_ALWAYS || provision_mode === APProvisionMode.AP_MODE_DISCONNECTED; }; const APSettingsForm: FC = () => { const { loadData, saving, data, setData, saveData, errorMessage } = useRest({ read: APApi.readAPSettings, update: APApi.updateAPSettings }); const { LL } = useI18nContext(); const [fieldErrors, setFieldErrors] = useState(); const updateFormValue = updateValue(setData); const content = () => { if (!data) { return ; } const validateAndSubmit = async () => { try { setFieldErrors(undefined); await validate(createAPSettingsValidator(data), data); saveData(); } catch (errors: any) { setFieldErrors(errors); } }; return ( <> {LL.AP_PROVIDE_TEXT_1()} {LL.AP_PROVIDE_TEXT_2()} {LL.AP_PROVIDE_TEXT_3()} {isAPEnabled(data) && ( <> {range(1, 14).map((i) => ( {i} ))} } label={LL.AP_HIDE_SSID()} /> {range(1, 9).map((i) => ( {i} ))} )} ); }; return ( {content()} ); }; export default APSettingsForm;