import { FC, useContext, useState } from 'react'; import { ValidateFieldsError } from 'async-validator'; import { Button } from '@mui/material'; import SaveIcon from '@mui/icons-material/Save'; import * as SecurityApi from '../../api/security'; import { SecuritySettings } from '../../types'; import { ButtonRow, FormLoader, MessageBox, SectionContent, ValidatedPasswordField } from '../../components'; import { SECURITY_SETTINGS_VALIDATOR, validate } from '../../validators'; import { updateValue, useRest } from '../../utils'; import { AuthenticatedContext } from '../../contexts/authentication'; const SecuritySettingsForm: FC = () => { const [fieldErrors, setFieldErrors] = useState(); const { loadData, saving, data, setData, saveData, errorMessage } = useRest({ read: SecurityApi.readSecuritySettings, update: SecurityApi.updateSecuritySettings }); const authenticatedContext = useContext(AuthenticatedContext); const updateFormValue = updateValue(setData); const content = () => { if (!data) { return ; } const validateAndSubmit = async () => { try { setFieldErrors(undefined); await validate(SECURITY_SETTINGS_VALIDATOR, data); await saveData(); await authenticatedContext.refresh(); } catch (errors: any) { setFieldErrors(errors); } }; return ( <> ); }; return ( {content()} ); }; export default SecuritySettingsForm;