From 08682fb3f5333234e05f4665801bb21aa0054989 Mon Sep 17 00:00:00 2001 From: Weiko Date: Tue, 26 May 2026 16:43:50 +0200 Subject: [PATCH] Various fixes - some AI findings (#20921) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit App permissions tab: - The fallback uuidv4() for a marketplace field was generated twice, so id and universalIdentifier could diverge; it's now computed once and reused as it seemed to be the intention (even though I don't really think it's a good idea) - Renamed buildobjectMetadataItemsFromMarketplaceApp → buildObjectMetadataItemsFromMarketplaceApp to follow camelCase. Morph relation validation: - Fixed the user-facing message "At least one relation is require" → "...is required" - Typos in the related test descriptions (Morh → Morph, samefield → same field) and their snapshots. Docs - The UUID field-type row in views.mdx only listed IS; updated to the full set supported by FILTER_OPERANDS_MAP (IS, IS_NOT, IS_EMPTY, IS_NOT_EMPTY). --- .../twenty-docs/developers/extend/apps/layout/views.mdx | 2 +- .../tabs/SettingsApplicationPermissionsTab.tsx | 9 +++++---- ...-input-to-flat-field-metadatas-to-create.spec.ts.snap | 2 +- .../validate-morph-relation-creation-payload.util.ts | 2 +- ...d-metadata-morph-relation-v2.integration-spec.ts.snap | 8 ++++---- ...-field-metadata-morph-relation-v2.integration-spec.ts | 4 ++-- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/twenty-docs/developers/extend/apps/layout/views.mdx b/packages/twenty-docs/developers/extend/apps/layout/views.mdx index ea950f3043..6b4fae7242 100644 --- a/packages/twenty-docs/developers/extend/apps/layout/views.mdx +++ b/packages/twenty-docs/developers/extend/apps/layout/views.mdx @@ -70,7 +70,7 @@ filters: [ | `CURRENCY.currencyCode` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` | | `DATE`, `DATE_TIME` | `IS`, `IS_RELATIVE`, `IS_IN_PAST`, `IS_IN_FUTURE`, `IS_TODAY`, `IS_BEFORE`, `IS_AFTER`, `IS_EMPTY`, `IS_NOT_EMPTY` | | `BOOLEAN` | `IS` | -| `UUID` | `IS` | +| `UUID` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` | | `TS_VECTOR` | `VECTOR_SEARCH` | > Field types with similar names can use entirely different operands — `SELECT` and `MULTI_SELECT` being a common case. diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx index 3657088389..988fb8b047 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx @@ -148,10 +148,11 @@ const buildFieldMetadataItemFromMarketplaceField = ( field: ObjectFieldManifest, ): FieldMetadataItem => { const now = new Date().toISOString(); + const universalIdentifier = field.universalIdentifier ?? uuidv4(); return { - id: field.universalIdentifier ?? uuidv4(), - universalIdentifier: field.universalIdentifier ?? uuidv4(), + id: universalIdentifier, + universalIdentifier, name: field.name, label: field.label, type: (field.type as FieldMetadataType) ?? FieldMetadataType.TEXT, @@ -172,7 +173,7 @@ const buildFieldMetadataItemFromMarketplaceField = ( }; }; -const buildobjectMetadataItemsFromMarketplaceApp = ( +const buildObjectMetadataItemsFromMarketplaceApp = ( defaultRole: RoleManifest, objectUniversalIdToIdMap: Record, marketplaceAppObjects: ObjectManifest[], @@ -292,7 +293,7 @@ const MarketplaceRoleEffect = ({ fieldUniversalIdToIdMap, ), objectMetadataItemsFromMarketplaceApp: - buildobjectMetadataItemsFromMarketplaceApp( + buildObjectMetadataItemsFromMarketplaceApp( defaultRole, objectUniversalIdToIdMap, marketplaceAppObjects, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap index ca22a39263..92d15b30ce 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap @@ -62,7 +62,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su "message": "Morph relation creation payloads are empty", "userFriendlyMessage": { "id": Any, - "message": "At least one relation is require", + "message": "At least one relation is required", }, }, ], diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util.ts index c18e29b21d..bb156a8bbe 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util.ts @@ -37,7 +37,7 @@ export const validateMorphRelationCreationPayload = async ({ { code: FieldMetadataExceptionCode.FIELD_METADATA_RELATION_MALFORMED, message: 'Morph relation creation payloads are empty', - userFriendlyMessage: msg`At least one relation is require`, + userFriendlyMessage: msg`At least one relation is required`, }, ], }; diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts.snap index f1c0eaa3b9..25a73e6c12 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing -exports[`failing createOne FieldMetadataService morph relation fields v2 Morh relation collision tests suite it should fail to create a already existing morph relation with samefield 1`] = ` +exports[`failing createOne FieldMetadataService morph relation fields v2 Morph relation collision tests suite it should fail to create a already existing morph relation with same field 1`] = ` { "extensions": { "code": "METADATA_VALIDATION_FAILED", @@ -91,7 +91,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re } `; -exports[`failing createOne FieldMetadataService morph relation fields v2 Morh relation collision tests suite it should fail to create a field with name than result in existing morph relation field join column 1`] = ` +exports[`failing createOne FieldMetadataService morph relation fields v2 Morph relation collision tests suite it should fail to create a field with name than result in existing morph relation field join column 1`] = ` { "extensions": { "code": "METADATA_VALIDATION_FAILED", @@ -612,7 +612,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou { "code": "FIELD_METADATA_RELATION_MALFORMED", "message": "Morph relation creation payloads are empty", - "userFriendlyMessage": "At least one relation is require", + "userFriendlyMessage": "At least one relation is required", }, ], "flatEntityMinimalInformation": { @@ -628,7 +628,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "fieldMetadata": 1, "totalErrors": 1, }, - "userFriendlyMessage": "At least one relation is require", + "userFriendlyMessage": "At least one relation is required", }, "message": "Multiple validation errors occurred while creating field", "name": "GraphQLError", diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts index 5d6058db0b..8714ac6dfd 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts @@ -446,7 +446,7 @@ describe('failing createOne FieldMetadataService morph relation fields v2', () = }, ); - describe('Morh relation collision tests suite', () => { + describe('Morph relation collision tests suite', () => { beforeAll(async () => { const morphRelationCreateFieldInput: Omit< CreateFieldInput, @@ -502,7 +502,7 @@ describe('failing createOne FieldMetadataService morph relation fields v2', () = expect(firstError.extensions.code).not.toBe('INTERNAL_SERVER_ERROR'); }); - it('it should fail to create a already existing morph relation with samefield', async () => { + it('it should fail to create a already existing morph relation with same field', async () => { const morphRelationCreateFieldInput: Omit< CreateFieldInput, 'workspaceId'