import { FC, useContext, useState } from 'react'; import { ValidateFieldsError } from 'async-validator'; import { Button } from '@mui/material'; import WarningIcon from '@mui/icons-material/Warning'; import CancelIcon from '@mui/icons-material/Cancel'; import * as SecurityApi from 'api/security'; import { SecuritySettings } from 'types'; import { ButtonRow, FormLoader, MessageBox, SectionContent, ValidatedPasswordField, BlockNavigation } from 'components'; import { SECURITY_SETTINGS_VALIDATOR, validate } from 'validators'; import { updateValueDirty, useRest } from 'utils'; import { AuthenticatedContext } from 'contexts/authentication'; import { useI18nContext } from 'i18n/i18n-react'; const SecuritySettingsForm: FC = () => { const { LL } = useI18nContext(); const [fieldErrors, setFieldErrors] = useState(); const { loadData, saving, data, setData, origData, dirtyFlags, blocker, setDirtyFlags, saveData, errorMessage } = useRest({ read: SecurityApi.readSecuritySettings, update: SecurityApi.updateSecuritySettings }); const authenticatedContext = useContext(AuthenticatedContext); const updateFormValue = updateValueDirty(origData, dirtyFlags, setDirtyFlags, 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 ( <> {dirtyFlags && dirtyFlags.length !== 0 && ( )} ); }; return ( {blocker ? : null} {content()} ); }; export default SecuritySettingsForm;