From a8aa766405c52018c245f82fd777e6f917eb665b Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Tue, 29 Nov 2022 12:46:06 -0700 Subject: [PATCH] Added validation for duplicate names --- ui/src/app/dynamic-registration/api.js | 7 ++++++- .../component/DynamicRegistrationForm.js | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ui/src/app/dynamic-registration/api.js b/ui/src/app/dynamic-registration/api.js index a99a4091e..04a8d9c1c 100644 --- a/ui/src/app/dynamic-registration/api.js +++ b/ui/src/app/dynamic-registration/api.js @@ -23,8 +23,13 @@ export function useDynamicRegistrationJsonSchema(opts = {}) { export function useDynamicRegistrationUiSchema() { return DynamicConfigurationDefinition.uiSchema; } -export function useDynamicRegistrationValidator() { +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 72e4bebcd..ef13a0b0b 100644 --- a/ui/src/app/dynamic-registration/component/DynamicRegistrationForm.js +++ b/ui/src/app/dynamic-registration/component/DynamicRegistrationForm.js @@ -9,9 +9,13 @@ import { FormContext, setFormDataAction, setFormErrorAction } from '../../form/F import { useDynamicRegistrationUiSchema, useDynamicRegistrationValidator } from '../api'; import Row from 'react-bootstrap/Row'; import Col from 'react-bootstrap/Col'; +import { useGetDynamicRegistrationsQuery } from '../../store/dynamic-registration/DynamicRegistrationSlice'; export function DynamicRegistrationForm ({registration = {}, errors = [], loading = false, schema, onSave, onCancel}) { + + const {data: registrations = []} = useGetDynamicRegistrationsQuery(); + const [touched, setTouched] = React.useState(false); const { dispatch } = React.useContext(FormContext); @@ -22,7 +26,7 @@ export function DynamicRegistrationForm ({registration = {}, errors = [], loadin }; const uiSchema = useDynamicRegistrationUiSchema(); - const validator = useDynamicRegistrationValidator(); + const validator = useDynamicRegistrationValidator(registrations); return (<>