diff --git a/packages/twenty-front/codegen.cjs b/packages/twenty-front/codegen.cjs index 73cf1346d..f318d5de0 100644 --- a/packages/twenty-front/codegen.cjs +++ b/packages/twenty-front/codegen.cjs @@ -1,6 +1,12 @@ module.exports = { - schema: process.env.REACT_APP_SERVER_BASE_URL + "/graphql", - documents: ['!./src/modules/object-metadata/**', '!./src/modules/object-record/**', './src/modules/**/*.tsx', './src/modules/**/*.ts'], + schema: process.env.REACT_APP_SERVER_BASE_URL + '/graphql', + documents: [ + '!./src/modules/object-metadata/**', + '!./src/modules/object-record/**', + './src/modules/**/*.tsx', + './src/modules/**/*.ts', + '!./src/**/*.test.tsx', + ], overwrite: true, generates: { './src/generated/graphql.tsx': { @@ -16,7 +22,7 @@ module.exports = { withComponent: false, scalars: { DateTime: 'string', - } + }, }, }, }, diff --git a/packages/twenty-front/src/modules/object-record/components/RecordShowPage.tsx b/packages/twenty-front/src/modules/object-record/components/RecordShowPage.tsx index 4d7adf44e..269d32339 100644 --- a/packages/twenty-front/src/modules/object-record/components/RecordShowPage.tsx +++ b/packages/twenty-front/src/modules/object-record/components/RecordShowPage.tsx @@ -4,6 +4,7 @@ import { useRecoilState } from 'recoil'; import { useFavorites } from '@/favorites/hooks/useFavorites'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition'; +import { parseFieldRelationType } from '@/object-metadata/utils/parseFieldRelationType'; import { parseFieldType } from '@/object-metadata/utils/parseFieldType'; import { FieldContext, @@ -30,6 +31,7 @@ import { ShowPageSummaryCard } from '@/ui/layout/show-page/components/ShowPageSu import { ShowPageRecoilScopeContext } from '@/ui/layout/states/ShowPageRecoilScopeContext'; import { PageTitle } from '@/ui/utilities/page-title/PageTitle'; import { RecoilScope } from '@/ui/utilities/recoil-scope/components/RecoilScope'; +import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; import { FieldMetadataType, FileFolder, @@ -139,6 +141,10 @@ export const RecordShowPage = () => { }); }; + const isRelationFieldCardEnabled = useIsFeatureEnabled( + 'IS_RELATION_FIELD_CARD_ENABLED', + ); + const availableFieldMetadataItems = objectMetadataItem.fields .filter( (fieldMetadataItem) => @@ -151,7 +157,9 @@ export const RecordShowPage = () => { const inlineFieldMetadataItems = availableFieldMetadataItems.filter( (fieldMetadataItem) => - fieldMetadataItem.type !== FieldMetadataType.Relation, + fieldMetadataItem.type !== FieldMetadataType.Relation || + (!isRelationFieldCardEnabled && + parseFieldRelationType(fieldMetadataItem) === 'TO_ONE_OBJECT'), ); const relationFieldMetadataItems = availableFieldMetadataItems.filter( @@ -265,28 +273,29 @@ export const RecordShowPage = () => { ), )} - {relationFieldMetadataItems.map( - (fieldMetadataItem, index) => ( - - - - ), - )} + {isRelationFieldCardEnabled && + relationFieldMetadataItems.map( + (fieldMetadataItem, index) => ( + + + + ), + )} )} diff --git a/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts b/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts index a6f029c27..4176e8d41 100644 --- a/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts +++ b/packages/twenty-front/src/modules/workspace/types/FeatureFlagKey.ts @@ -1,7 +1,8 @@ export type FeatureFlagKey = | 'IS_MESSAGING_ENABLED' | 'IS_NOTE_CREATE_IMAGES_ENABLED' - | 'IS_RELATION_FIELD_TYPE_ENABLED' - | 'IS_SELECT_FIELD_TYPE_ENABLED' | 'IS_QUICK_ACTIONS_ENABLED' - | 'IS_RATING_FIELD_TYPE_ENABLED'; + | 'IS_RATING_FIELD_TYPE_ENABLED' + | 'IS_RELATION_FIELD_CARD_ENABLED' + | 'IS_RELATION_FIELD_TYPE_ENABLED' + | 'IS_SELECT_FIELD_TYPE_ENABLED'; 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 ea684c266..14e223f91 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 @@ -28,6 +28,11 @@ export const seedFeatureFlags = async ( workspaceId: workspaceId, value: true, }, + { + key: 'IS_RELATION_FIELD_CARD_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 571a751ad..a72fa0ab1 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 @@ -38,6 +38,11 @@ export const seedFeatureFlags = async ( workspaceId: workspaceId, value: true, }, + { + key: 'IS_RELATION_FIELD_CARD_ENABLED', + workspaceId: workspaceId, + value: true, + }, ]) .execute(); };