From f4ca6613c766a0fb30b76df4bc1143e6f3ccb1fe Mon Sep 17 00:00:00 2001 From: yassinedorbozgithub Date: Tue, 10 Jun 2025 18:14:22 +0100 Subject: [PATCH] fix: apply feedback --- api/src/cms/schemas/content-type.schema.ts | 4 ++-- .../validators/validate-unique-names.validator.ts | 4 ++-- api/src/utils/test/fixtures/contenttype.ts | 2 +- .../components/content-types/ContentTypeForm.tsx | 14 ++++---------- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/api/src/cms/schemas/content-type.schema.ts b/api/src/cms/schemas/content-type.schema.ts index 2a684036..f511d4ed 100644 --- a/api/src/cms/schemas/content-type.schema.ts +++ b/api/src/cms/schemas/content-type.schema.ts @@ -49,10 +49,10 @@ export class ContentType extends BaseSchema { * when `runValidators: true` is set. */ validator(fields: ContentField[]): boolean { - return validateUniqueFields(fields, 'name'); + return validateUniqueFields(fields, 'label'); }, message: - 'Each element in "fields" must have a unique "name" (duplicate detected)', + 'Each element in "fields" must have a unique "label" (duplicate detected)', }, }) fields: ContentField[]; diff --git a/api/src/cms/validators/validate-unique-names.validator.ts b/api/src/cms/validators/validate-unique-names.validator.ts index 051411e0..3ea81e5c 100644 --- a/api/src/cms/validators/validate-unique-names.validator.ts +++ b/api/src/cms/validators/validate-unique-names.validator.ts @@ -20,10 +20,10 @@ export class UniqueFieldNamesConstraint implements ValidatorConstraintInterface { validate(fields: ContentField[], _args: ValidationArguments) { - return validateUniqueFields(fields, 'name'); + return validateUniqueFields(fields, 'label'); } defaultMessage(args: ValidationArguments) { - return `${args.property} contains duplicate "name" values; each field.name must be unique`; + return `${args.property} contains duplicate "label" values; each field.name must be unique`; } } diff --git a/api/src/utils/test/fixtures/contenttype.ts b/api/src/utils/test/fixtures/contenttype.ts index 016bc323..0f751f8c 100644 --- a/api/src/utils/test/fixtures/contenttype.ts +++ b/api/src/utils/test/fixtures/contenttype.ts @@ -64,7 +64,7 @@ const contentTypes: TContentTypeFixtures['values'][] = [ }, { name: 'subtitle', - label: 'Image', + label: 'Subtitle', type: FieldType.file, }, ], diff --git a/frontend/src/components/content-types/ContentTypeForm.tsx b/frontend/src/components/content-types/ContentTypeForm.tsx index cf819f07..8276cd9c 100644 --- a/frontend/src/components/content-types/ContentTypeForm.tsx +++ b/frontend/src/components/content-types/ContentTypeForm.tsx @@ -52,16 +52,10 @@ export const ContentTypeForm: FC> = ({ const { append, fields, remove } = useFieldArray({ name: "fields", rules: { - validate: (value) => { - const labelCounts = value.reduce((acc, field) => { - if (!field.label.trim()) return acc; - acc[field.label] = (acc[field.label] || 0) + 1; - - return acc; - }, {} as Record); - const hasDuplicatedLabels = Object.values(labelCounts).some( - (count: number) => count > 1, - ); + validate: (fields) => { + const hasDuplicatedLabels = + new Set(fields.map((f) => f["label"] as string)).size === + fields.length; if (hasDuplicatedLabels) { toast.error(t("message.duplicate_labels_not_allowed"));