diff --git a/ui/src/app/dynamic-registration/api.js b/ui/src/app/dynamic-registration/api.js index 04a8d9c1c..c8f45e477 100644 --- a/ui/src/app/dynamic-registration/api.js +++ b/ui/src/app/dynamic-registration/api.js @@ -23,13 +23,3 @@ export function useDynamicRegistrationJsonSchema(opts = {}) { export function useDynamicRegistrationUiSchema() { return DynamicConfigurationDefinition.uiSchema; } -export function useDynamicRegistrationValidator(registrations) { - const names = registrations.map(s => s.name); - - return (formData, errors) => { - if (names.indexOf(formData.name) > -1) { - errors.name.addError('message.name-unique'); - } - return errors; - } -} \ No newline at end of file diff --git a/ui/src/app/dynamic-registration/component/DynamicRegistrationForm.js b/ui/src/app/dynamic-registration/component/DynamicRegistrationForm.js index ef13a0b0b..ad876a73e 100644 --- a/ui/src/app/dynamic-registration/component/DynamicRegistrationForm.js +++ b/ui/src/app/dynamic-registration/component/DynamicRegistrationForm.js @@ -6,27 +6,25 @@ import { faSpinner, faSave } from '@fortawesome/free-solid-svg-icons'; import Translate from '../../i18n/components/translate'; import { FormContext, setFormDataAction, setFormErrorAction } from '../../form/FormManager'; -import { useDynamicRegistrationUiSchema, useDynamicRegistrationValidator } from '../api'; +import { useDynamicRegistrationUiSchema } from '../api'; import Row from 'react-bootstrap/Row'; import Col from 'react-bootstrap/Col'; import { useGetDynamicRegistrationsQuery } from '../../store/dynamic-registration/DynamicRegistrationSlice'; +import DynamicRegistrationDefinition from '../hoc/DynamicConfigurationDefinition'; -export function DynamicRegistrationForm ({registration = {}, errors = [], loading = false, schema, onSave, onCancel}) { +export function DynamicRegistrationForm ({registration = {}, errors = [], current = {}, loading = false, schema, onSave, onCancel}) { const {data: registrations = []} = useGetDynamicRegistrationsQuery(); - const [touched, setTouched] = React.useState(false); - const { dispatch } = React.useContext(FormContext); const onChange = ({formData, errors, ...props}) => { dispatch(setFormDataAction(formData)); dispatch(setFormErrorAction(errors)); - setTouched(true); }; const uiSchema = useDynamicRegistrationUiSchema(); - const validator = useDynamicRegistrationValidator(registrations); + const validator = DynamicRegistrationDefinition.validator(registrations, current?.name); return (<>
@@ -35,7 +33,7 @@ export function DynamicRegistrationForm ({registration = {}, errors = [], loadin