From 2507da1b25400efb6abcf660a611ec46ef313ac4 Mon Sep 17 00:00:00 2001 From: Deepak Kumar Date: Mon, 18 Dec 2023 13:08:25 +0530 Subject: [PATCH] feat: Add feature flags to Select & Rating custom fields (#3037) * Add feature flag key for select and rating * Use feature flag boolean to decide if select & rating are enabled * Enable select and rating in demo & core --- .../modules/workspace/types/FeatureFlagKey.ts | 4 +++- .../SettingsObjectNewFieldStep2.tsx | 18 ++++++++++++++++-- .../typeorm-seeds/core/demo/feature-flags.ts | 10 ++++++++++ .../typeorm-seeds/core/feature-flags.ts | 10 ++++++++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts b/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts index c7c6b38a2..6ed1e5501 100644 --- a/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts +++ b/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts @@ -1,4 +1,6 @@ export type FeatureFlagKey = | 'IS_MESSAGING_ENABLED' | 'IS_NOTE_CREATE_IMAGES_ENABLED' - | 'IS_RELATION_FIELD_TYPE_ENABLED'; + | 'IS_RELATION_FIELD_TYPE_ENABLED' + | 'IS_SELECT_FIELD_TYPE_ENABLED' + | 'IS_RATING_FIELD_TYPE_ENABLED'; diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx index 40a583e92..871366c32 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx @@ -42,6 +42,14 @@ export const SettingsObjectNewFieldStep2 = () => { 'IS_RELATION_FIELD_TYPE_ENABLED', ); + const isSelectFieldTypeEnabled = useIsFeatureEnabled( + 'IS_SELECT_FIELD_TYPE_ENABLED', + ); + + const isRatingFieldTypeEnabled = useIsFeatureEnabled( + 'IS_RATING_FIELD_TYPE_ENABLED', + ); + const { formValues, handleFormChange, @@ -256,8 +264,6 @@ export const SettingsObjectNewFieldStep2 = () => { FieldMetadataType.Numeric, FieldMetadataType.Phone, FieldMetadataType.Probability, - FieldMetadataType.Rating, - FieldMetadataType.Select, FieldMetadataType.Uuid, ]; @@ -265,6 +271,14 @@ export const SettingsObjectNewFieldStep2 = () => { excludedFieldTypes.push(FieldMetadataType.Relation); } + if (!isSelectFieldTypeEnabled) { + excludedFieldTypes.push(FieldMetadataType.Select); + } + + if (!isRatingFieldTypeEnabled) { + excludedFieldTypes.push(FieldMetadataType.Rating); + } + return ( diff --git a/packages/twenty-server/src/database/typeorm-seeds/core/demo/feature-flags.ts b/packages/twenty-server/src/database/typeorm-seeds/core/demo/feature-flags.ts index c2e1cbc3b..ea684c266 100644 --- a/packages/twenty-server/src/database/typeorm-seeds/core/demo/feature-flags.ts +++ b/packages/twenty-server/src/database/typeorm-seeds/core/demo/feature-flags.ts @@ -18,6 +18,16 @@ export const seedFeatureFlags = async ( workspaceId: workspaceId, value: true, }, + { + key: 'IS_SELECT_FIELD_TYPE_ENABLED', + workspaceId: workspaceId, + value: true, + }, + { + key: 'IS_RATING_FIELD_TYPE_ENABLED', + workspaceId: workspaceId, + value: true, + }, ]) .execute(); }; diff --git a/packages/twenty-server/src/database/typeorm-seeds/core/feature-flags.ts b/packages/twenty-server/src/database/typeorm-seeds/core/feature-flags.ts index 60aeb0d6b..571a751ad 100644 --- a/packages/twenty-server/src/database/typeorm-seeds/core/feature-flags.ts +++ b/packages/twenty-server/src/database/typeorm-seeds/core/feature-flags.ts @@ -28,6 +28,16 @@ export const seedFeatureFlags = async ( workspaceId: workspaceId, value: true, }, + { + key: 'IS_SELECT_FIELD_TYPE_ENABLED', + workspaceId: workspaceId, + value: true, + }, + { + key: 'IS_RATING_FIELD_TYPE_ENABLED', + workspaceId: workspaceId, + value: true, + }, ]) .execute(); };