diff --git a/packages/twenty-front/.storybook/vitest.setup.ts b/packages/twenty-front/.storybook/vitest.setup.ts index d950bb48cd..0dbcad938e 100644 --- a/packages/twenty-front/.storybook/vitest.setup.ts +++ b/packages/twenty-front/.storybook/vitest.setup.ts @@ -3,7 +3,7 @@ import * as projectAnnotations from './preview'; // Pre-warm the dynamic import used by WorkflowStepDecorator so the // module is cached before any test runs (avoids flaky timeouts in CI). -import('~/testing/utils/generatedMockObjectMetadataItems'); +import('~/testing/utils/getTestEnrichedObjectMetadataItemsMock'); // This is an important step to apply the right configuration when testing your stories. // More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations diff --git a/packages/twenty-front/scripts/mock-data/generate-record-data.ts b/packages/twenty-front/scripts/mock-data/generate-record-data.ts index a0320dc9eb..168855c028 100644 --- a/packages/twenty-front/scripts/mock-data/generate-record-data.ts +++ b/packages/twenty-front/scripts/mock-data/generate-record-data.ts @@ -1,7 +1,7 @@ /* oxlint-disable no-console, lingui/no-unlocalized-strings */ import { print } from 'graphql'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject'; import { generateFindManyRecordsQuery } from '@/object-record/utils/generateFindManyRecordsQuery'; @@ -29,7 +29,7 @@ const addTypenamesToSelections = (query: string): string => const toObjectMetadataItems = (rawMetadata: { objects: { edges: { node: Record }[] }; -}): ObjectMetadataItem[] => +}): EnrichedObjectMetadataItem[] => rawMetadata.objects.edges.map((edge) => { const { fieldsList, indexMetadataList, ...rest } = edge.node; @@ -44,12 +44,12 @@ const toObjectMetadataItems = (rawMetadata: { indexFieldMetadatas: index.indexFieldMetadataList ?? [], }), ), - } as unknown as ObjectMetadataItem; + } as unknown as EnrichedObjectMetadataItem; }); const generateForObject = async ( token: string, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], objectNameSingular: string, ) => { const objectMetadataItem = objectMetadataItems.find( diff --git a/packages/twenty-front/src/modules/activities/graphql/operation-signatures/factories/findActivitiesOperationSignatureFactory.ts b/packages/twenty-front/src/modules/activities/graphql/operation-signatures/factories/findActivitiesOperationSignatureFactory.ts index acc064a09f..bda41410d7 100644 --- a/packages/twenty-front/src/modules/activities/graphql/operation-signatures/factories/findActivitiesOperationSignatureFactory.ts +++ b/packages/twenty-front/src/modules/activities/graphql/operation-signatures/factories/findActivitiesOperationSignatureFactory.ts @@ -1,10 +1,10 @@ import { generateActivityTargetMorphFieldKeys } from '@/activities/utils/generateActivityTargetMorphFieldKeys'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlOperationSignatureFactory } from '@/object-record/graphql/types/RecordGqlOperationSignatureFactory'; type FindActivitiesOperationSignatureFactory = { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectNameSingular: CoreObjectNameSingular; isMorphRelation: boolean; }; diff --git a/packages/twenty-front/src/modules/activities/graphql/operation-signatures/factories/findActivityTargetsOperationSignatureFactory.ts b/packages/twenty-front/src/modules/activities/graphql/operation-signatures/factories/findActivityTargetsOperationSignatureFactory.ts index b6a1504218..c7fef8c1cc 100644 --- a/packages/twenty-front/src/modules/activities/graphql/operation-signatures/factories/findActivityTargetsOperationSignatureFactory.ts +++ b/packages/twenty-front/src/modules/activities/graphql/operation-signatures/factories/findActivityTargetsOperationSignatureFactory.ts @@ -1,13 +1,13 @@ import { getJoinObjectNameSingular } from '@/activities/utils/getJoinObjectNameSingular'; import { type CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject'; import { type RecordGqlOperationSignatureFactory } from '@/object-record/graphql/types/RecordGqlOperationSignatureFactory'; import { isDefined } from 'twenty-shared/utils'; type FindActivityTargetsOperationSignatureFactory = { objectNameSingular: CoreObjectNameSingular.Note | CoreObjectNameSingular.Task; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; }; export const findActivityTargetsOperationSignatureFactory: RecordGqlOperationSignatureFactory< diff --git a/packages/twenty-front/src/modules/activities/hooks/__tests__/useActivityTargetObjectRecords.test.tsx b/packages/twenty-front/src/modules/activities/hooks/__tests__/useActivityTargetObjectRecords.test.tsx index 0c0071b5f3..11cd316723 100644 --- a/packages/twenty-front/src/modules/activities/hooks/__tests__/useActivityTargetObjectRecords.test.tsx +++ b/packages/twenty-front/src/modules/activities/hooks/__tests__/useActivityTargetObjectRecords.test.tsx @@ -15,7 +15,7 @@ import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFr import { type WorkspaceMember } from '@/workspace-member/types/WorkspaceMember'; import { JestObjectMetadataItemSetter } from '~/testing/jest/JestObjectMetadataItemSetter'; import { mockedWorkspaceMemberRecords } from '~/testing/mock-data/generated/data/workspaceMembers/mock-workspaceMembers-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const cache = new InMemoryCache(); @@ -142,7 +142,7 @@ describe('useActivityTargetObjectRecords', () => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); const { result } = renderHook( diff --git a/packages/twenty-front/src/modules/activities/hooks/__tests__/useCreateActivityInDB.test.tsx b/packages/twenty-front/src/modules/activities/hooks/__tests__/useCreateActivityInDB.test.tsx index 9a1278453b..d219848a61 100644 --- a/packages/twenty-front/src/modules/activities/hooks/__tests__/useCreateActivityInDB.test.tsx +++ b/packages/twenty-front/src/modules/activities/hooks/__tests__/useCreateActivityInDB.test.tsx @@ -9,7 +9,7 @@ import { generateCreateOneRecordMutation } from '@/object-metadata/utils/generat import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; import { mockedTaskRecords } from '~/testing/mock-data/generated/data/tasks/mock-tasks-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; const mockedTasks = mockedTaskRecords.map((record) => @@ -38,7 +38,7 @@ const operationSignature = createOneActivityOperationSignatureFactory({ const createOneTaskMutation = generateCreateOneRecordMutation({ objectMetadataItem: taskMetadataItem, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), recordGqlFields: operationSignature.fields, objectPermissionsByObjectMetadataId: {}, }); diff --git a/packages/twenty-front/src/modules/activities/hooks/useActivityTargetsForTargetableObjects.ts b/packages/twenty-front/src/modules/activities/hooks/useActivityTargetsForTargetableObjects.ts index 2dc9ae53f4..9930a254f2 100644 --- a/packages/twenty-front/src/modules/activities/hooks/useActivityTargetsForTargetableObjects.ts +++ b/packages/twenty-front/src/modules/activities/hooks/useActivityTargetsForTargetableObjects.ts @@ -9,7 +9,7 @@ import { type NoteTarget } from '@/activities/types/NoteTarget'; import { type TaskTarget } from '@/activities/types/TaskTarget'; import { getActivityTargetsFilter } from '@/activities/utils/getActivityTargetsFilter'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; @@ -34,7 +34,7 @@ export const useActivityTargetsForTargetableObjects = ({ activityTargetsOrderByVariables: RecordGqlOperationOrderBy; limit: number; }) => { - const objectMetadataItems = useAtomStateValue( + const objectMetadataItems = useAtomStateValue( objectMetadataItemsSelector, ); const isNoteTargetMigrated = useIsFeatureEnabled( diff --git a/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useCompleteTask.test.tsx b/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useCompleteTask.test.tsx index 6a9e860a66..2fa01dce9a 100644 --- a/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useCompleteTask.test.tsx +++ b/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useCompleteTask.test.tsx @@ -5,7 +5,7 @@ import { useCompleteTask } from '@/activities/tasks/hooks/useCompleteTask'; import { type Task } from '@/activities/types/Task'; import { generateUpdateOneRecordMutation } from '@/object-metadata/utils/generateUpdateOneRecordMutation'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; const task: Task = { @@ -27,7 +27,7 @@ const task: Task = { const updateOneTaskMutation = generateUpdateOneRecordMutation({ objectMetadataItem: getMockObjectMetadataItemOrThrow('task'), - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), computeReferences: false, objectPermissionsByObjectMetadataId: {}, }); diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/components/EventRow.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/components/EventRow.tsx index fef56803d9..38b84ce04b 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/components/EventRow.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/components/EventRow.tsx @@ -10,7 +10,7 @@ import { EventRowDynamicComponent } from '@/activities/timeline-activities/rows/ import { type TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; import { getTimelineActivityAuthorFullName } from '@/activities/timeline-activities/utils/getTimelineActivityAuthorFullName'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue'; @@ -79,7 +79,7 @@ const StyledItemContainer = styled.div<{ isMarginBottom?: boolean }>` `; type EventRowProps = { - mainObjectMetadataItem: ObjectMetadataItem | null; + mainObjectMetadataItem: EnrichedObjectMetadataItem | null; isLastEvent?: boolean; event: TimelineActivity; }; diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/components/EventsGroup.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/components/EventsGroup.tsx index fdea67c18c..8acc07e92b 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/components/EventsGroup.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/components/EventsGroup.tsx @@ -2,14 +2,14 @@ import { styled } from '@linaria/react'; import { EventRow } from '@/activities/timeline-activities/components/EventRow'; import { type EventGroup } from '@/activities/timeline-activities/utils/groupEventsByMonth'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { themeCssVariables } from 'twenty-ui/theme-constants'; type EventsGroupProps = { group: EventGroup; month: string; year?: number; - mainObjectMetadataItem: ObjectMetadataItem | null; + mainObjectMetadataItem: EnrichedObjectMetadataItem | null; }; const StyledActivityGroup = styled.div` diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem.ts b/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem.ts index 49e9039077..b4a4b70e43 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem.ts +++ b/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem.ts @@ -1,9 +1,9 @@ import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; export const useLinkedObjectObjectMetadataItem = (id: string | null) => { - const objectMetadataItems: ObjectMetadataItem[] = useAtomStateValue( + const objectMetadataItems: EnrichedObjectMetadataItem[] = useAtomStateValue( objectMetadataItemsSelector, ); diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/components/EventIconDynamicComponent.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/components/EventIconDynamicComponent.tsx index 4a6beb939b..c28e0f8822 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/components/EventIconDynamicComponent.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/components/EventIconDynamicComponent.tsx @@ -1,5 +1,5 @@ import { type TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { IconCirclePlus, IconEditCircle, @@ -13,7 +13,7 @@ export const EventIconDynamicComponent = ({ linkedObjectMetadataItem, }: { event: TimelineActivity; - linkedObjectMetadataItem: ObjectMetadataItem | null; + linkedObjectMetadataItem: EnrichedObjectMetadataItem | null; }) => { const { getIcon } = useIcons(); const [, eventAction] = event.name.split('.'); diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/components/EventRowDynamicComponent.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/components/EventRowDynamicComponent.tsx index c3ce1bbd47..39485c29af 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/components/EventRowDynamicComponent.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/components/EventRowDynamicComponent.tsx @@ -6,14 +6,14 @@ import { EventRowMainObject } from '@/activities/timeline-activities/rows/main-o import { EventRowMessage } from '@/activities/timeline-activities/rows/message/components/EventRowMessage'; import { type TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { themeCssVariables } from 'twenty-ui/theme-constants'; export interface EventRowDynamicComponentProps { labelIdentifierValue: string; event: TimelineActivity; - mainObjectMetadataItem: ObjectMetadataItem; - linkedObjectMetadataItem: ObjectMetadataItem | null; + mainObjectMetadataItem: EnrichedObjectMetadataItem; + linkedObjectMetadataItem: EnrichedObjectMetadataItem | null; authorFullName: string; createdAt?: string; } diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiff.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiff.tsx index a74330005a..054f3cdf74 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiff.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiff.tsx @@ -4,13 +4,13 @@ import { EventFieldDiffLabel } from '@/activities/timeline-activities/rows/main- import { EventFieldDiffValue } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue'; import { EventFieldDiffValueEffect } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffValueEffect'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { Trans } from '@lingui/react/macro'; import { themeCssVariables } from 'twenty-ui/theme-constants'; type EventFieldDiffProps = { diffRecord: Record; - mainObjectMetadataItem: ObjectMetadataItem; + mainObjectMetadataItem: EnrichedObjectMetadataItem; fieldMetadataItem: FieldMetadataItem | undefined; diffArtificialRecordStoreId: string; }; diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffContainer.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffContainer.tsx index b68a0b3945..8121b75f40 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffContainer.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffContainer.tsx @@ -1,10 +1,10 @@ import { EventFieldDiff } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiff'; import { isDefined } from 'twenty-shared/utils'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; type EventFieldDiffContainerProps = { - mainObjectMetadataItem: ObjectMetadataItem; + mainObjectMetadataItem: EnrichedObjectMetadataItem; diffKey: string; diffValue: any; eventId: string; diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue.tsx index 9ff62e4eeb..69f9d9d296 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue.tsx @@ -1,7 +1,7 @@ import { styled } from '@linaria/react'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FieldDisplay } from '@/object-record/record-field/ui/components/FieldDisplay'; import { FieldContext } from '@/object-record/record-field/ui/contexts/FieldContext'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/ui/states/contexts/RecordFieldComponentInstanceContext'; @@ -9,7 +9,7 @@ import { themeCssVariables } from 'twenty-ui/theme-constants'; type EventFieldDiffValueProps = { diffArtificialRecordStoreId: string; - mainObjectMetadataItem: ObjectMetadataItem; + mainObjectMetadataItem: EnrichedObjectMetadataItem; fieldMetadataItem: FieldMetadataItem; }; diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValueEffect.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValueEffect.tsx index 35e6cd1983..c2fb1bf523 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValueEffect.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValueEffect.tsx @@ -1,7 +1,7 @@ import { useEffect } from 'react'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { useSetAtomFamilyState } from '@/ui/utilities/state/jotai/hooks/useSetAtomFamilyState'; import { isDefined } from 'twenty-shared/utils'; @@ -14,7 +14,7 @@ export const EventFieldDiffValueEffect = ({ }: { diffArtificialRecordStoreId: string; diffRecord: Record | undefined; - mainObjectMetadataItem: ObjectMetadataItem; + mainObjectMetadataItem: EnrichedObjectMetadataItem; fieldMetadataItem: FieldMetadataItem; }) => { const setRecordStore = useSetAtomFamilyState( diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventRowMainObjectUpdated.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventRowMainObjectUpdated.tsx index 4df90c5a20..ab99fd3437 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventRowMainObjectUpdated.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventRowMainObjectUpdated.tsx @@ -8,11 +8,11 @@ import { StyledEventRowItemColumn } from '@/activities/timeline-activities/rows/ import { EventFieldDiffContainer } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffContainer'; import { type TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { MOBILE_VIEWPORT, themeCssVariables } from 'twenty-ui/theme-constants'; type EventRowMainObjectUpdatedProps = { - mainObjectMetadataItem: ObjectMetadataItem; + mainObjectMetadataItem: EnrichedObjectMetadataItem; authorFullName: string; labelIdentifierValue: string; event: TimelineActivity; diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/__stories__/EventRowMainObjectUpdated.stories.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/__stories__/EventRowMainObjectUpdated.stories.tsx index 9afefeb2fc..2b6f4d33dd 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/__stories__/EventRowMainObjectUpdated.stories.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/__stories__/EventRowMainObjectUpdated.stories.tsx @@ -5,7 +5,7 @@ import { type Meta, type StoryObj } from '@storybook/react-vite'; import { ComponentDecorator, RouterDecorator } from 'twenty-ui/testing'; import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const meta: Meta = { title: 'Modules/TimelineActivities/Rows/MainObject/EventRowMainObjectUpdated', @@ -35,7 +35,7 @@ const meta: Meta = { }, }, } as TimelineActivity, - mainObjectMetadataItem: generatedMockObjectMetadataItems.find( + mainObjectMetadataItem: getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', ), }, diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/utils/__tests__/filterOutInvalidTimelineActivities.test.ts b/packages/twenty-front/src/modules/activities/timeline-activities/utils/__tests__/filterOutInvalidTimelineActivities.test.ts index 217e4766f5..037c1537d3 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/utils/__tests__/filterOutInvalidTimelineActivities.test.ts +++ b/packages/twenty-front/src/modules/activities/timeline-activities/utils/__tests__/filterOutInvalidTimelineActivities.test.ts @@ -1,7 +1,7 @@ import { type TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; import { filterOutInvalidTimelineActivities } from '@/activities/timeline-activities/utils/filterOutInvalidTimelineActivities'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; const noteObjectMetadataItem = { nameSingular: CoreObjectNameSingular.Note, @@ -9,7 +9,7 @@ const noteObjectMetadataItem = { fields: [{ name: 'field1' }, { name: 'field2' }, { name: 'field3' }], readableFields: [{ name: 'field1' }, { name: 'field2' }, { name: 'field3' }], updatableFields: [{ name: 'field1' }, { name: 'field2' }, { name: 'field3' }], -} as ObjectMetadataItem; +} as EnrichedObjectMetadataItem; describe('filterOutInvalidTimelineActivities', () => { it('should filter out TimelineActivities with deleted fields from the properties diff', () => { @@ -52,7 +52,7 @@ describe('filterOutInvalidTimelineActivities', () => { { name: 'field2' }, { name: 'field3' }, ], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const filteredEvents = filterOutInvalidTimelineActivities( events, @@ -113,7 +113,7 @@ describe('filterOutInvalidTimelineActivities', () => { fields: [{ name: 'field1' }, { name: 'field2' }], readableFields: [{ name: 'field1' }, { name: 'field2' }], updatableFields: [{ name: 'field1' }, { name: 'field2' }], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const filteredEvents = filterOutInvalidTimelineActivities( events, @@ -144,7 +144,7 @@ describe('filterOutInvalidTimelineActivities', () => { fields: [{ name: 'field1' }, { name: 'field2' }], readableFields: [{ name: 'field1' }, { name: 'field2' }], updatableFields: [{ name: 'field1' }, { name: 'field2' }], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const filteredEvents = filterOutInvalidTimelineActivities( events, diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/utils/filterOutInvalidTimelineActivities.ts b/packages/twenty-front/src/modules/activities/timeline-activities/utils/filterOutInvalidTimelineActivities.ts index e4d74f5066..8d237d694c 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/utils/filterOutInvalidTimelineActivities.ts +++ b/packages/twenty-front/src/modules/activities/timeline-activities/utils/filterOutInvalidTimelineActivities.ts @@ -1,11 +1,11 @@ import { type TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export const filterOutInvalidTimelineActivities = ( timelineActivities: TimelineActivity[], mainObjectSingularName: string, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ): TimelineActivity[] => { const mainObjectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => diff --git a/packages/twenty-front/src/modules/activities/types/ActivityTargetObject.ts b/packages/twenty-front/src/modules/activities/types/ActivityTargetObject.ts index 5e917bdfdd..f047fddade 100644 --- a/packages/twenty-front/src/modules/activities/types/ActivityTargetObject.ts +++ b/packages/twenty-front/src/modules/activities/types/ActivityTargetObject.ts @@ -1,10 +1,10 @@ import { type NoteTarget } from '@/activities/types/NoteTarget'; import { type TaskTarget } from '@/activities/types/TaskTarget'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; export type ActivityTargetWithTargetRecord = { - targetObjectMetadataItem: ObjectMetadataItem; + targetObjectMetadataItem: EnrichedObjectMetadataItem; activityTarget: NoteTarget | TaskTarget; targetObject: ObjectRecord; }; diff --git a/packages/twenty-front/src/modules/activities/utils/generateActivityTargetMorphFieldKeys.ts b/packages/twenty-front/src/modules/activities/utils/generateActivityTargetMorphFieldKeys.ts index c2125c585f..bfd908b6e0 100644 --- a/packages/twenty-front/src/modules/activities/utils/generateActivityTargetMorphFieldKeys.ts +++ b/packages/twenty-front/src/modules/activities/utils/generateActivityTargetMorphFieldKeys.ts @@ -1,8 +1,8 @@ import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export const generateActivityTargetMorphFieldKeys = ( - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], isMorphRelation: boolean, ) => { const targetableObjectMetadataItems = objectMetadataItems.filter( diff --git a/packages/twenty-front/src/modules/activities/utils/getActivityTargetFieldNameForObject.ts b/packages/twenty-front/src/modules/activities/utils/getActivityTargetFieldNameForObject.ts index 578a18251a..b476dc1ba7 100644 --- a/packages/twenty-front/src/modules/activities/utils/getActivityTargetFieldNameForObject.ts +++ b/packages/twenty-front/src/modules/activities/utils/getActivityTargetFieldNameForObject.ts @@ -1,6 +1,6 @@ import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; type GetActivityTargetFieldNameForObjectArgs = { @@ -8,7 +8,7 @@ type GetActivityTargetFieldNameForObjectArgs = { | CoreObjectNameSingular.Note | CoreObjectNameSingular.Task; targetObjectMetadataId: string; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; isMorphRelation?: boolean; }; diff --git a/packages/twenty-front/src/modules/activities/utils/getActivityTargetObjectRecords.ts b/packages/twenty-front/src/modules/activities/utils/getActivityTargetObjectRecords.ts index 98d2f001a0..41cf52e9bd 100644 --- a/packages/twenty-front/src/modules/activities/utils/getActivityTargetObjectRecords.ts +++ b/packages/twenty-front/src/modules/activities/utils/getActivityTargetObjectRecords.ts @@ -3,7 +3,7 @@ import { type Note } from '@/activities/types/Note'; import { type NoteTarget } from '@/activities/types/NoteTarget'; import { type Task } from '@/activities/types/Task'; import { type TaskTarget } from '@/activities/types/TaskTarget'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { CoreObjectNameSingular, @@ -14,7 +14,7 @@ import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; type GetActivityTargetObjectRecordsProps = { activityRecord: Note | Task; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; activityTargets?: Nullable; }; @@ -83,7 +83,9 @@ export const getActivityTargetObjectRecords = ({ } let matchingFieldName: string | undefined; - let correspondingObjectMetadataItem: ObjectMetadataItem | undefined; + let correspondingObjectMetadataItem: + | EnrichedObjectMetadataItem + | undefined; for (const field of activityTargetRelationFields) { if ( diff --git a/packages/twenty-front/src/modules/activities/utils/getActivityTargetsFilter.ts b/packages/twenty-front/src/modules/activities/utils/getActivityTargetsFilter.ts index 1c76ad5c5f..1a9a46ef5d 100644 --- a/packages/twenty-front/src/modules/activities/utils/getActivityTargetsFilter.ts +++ b/packages/twenty-front/src/modules/activities/utils/getActivityTargetsFilter.ts @@ -1,7 +1,7 @@ import { type ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; export const getActivityTargetsFilter = ({ @@ -14,7 +14,7 @@ export const getActivityTargetsFilter = ({ activityObjectNameSingular: | CoreObjectNameSingular.Note | CoreObjectNameSingular.Task; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; isMorphRelation?: boolean; }) => { const activityTargetObjectNameSingular = diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/__tests__/processGroupByConnectionWithRecords.test.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/__tests__/processGroupByConnectionWithRecords.test.ts index 02e456ef33..8607fc40f7 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/__tests__/processGroupByConnectionWithRecords.test.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/__tests__/processGroupByConnectionWithRecords.test.ts @@ -4,17 +4,17 @@ import { type FieldFunctionOptions } from '@apollo/client/cache'; type ReadFieldFunction = FieldFunctionOptions['readField']; type ToReferenceFunction = FieldFunctionOptions['toReference']; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; import { processGroupByConnectionWithRecords } from '@/apollo/optimistic-effect/group-by/utils/processGroupByConnectionWithRecords'; describe('processGroupByConnectionWithRecords', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { nameSingular: 'person', namePlural: 'people', - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const mockRecord: RecordGqlNode = { __typename: 'Person', diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/__tests__/triggerUpdateGroupByQueriesOptimisticEffect.test.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/__tests__/triggerUpdateGroupByQueriesOptimisticEffect.test.ts index 9068833ecc..02b4ea7a2c 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/__tests__/triggerUpdateGroupByQueriesOptimisticEffect.test.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/__tests__/triggerUpdateGroupByQueriesOptimisticEffect.test.ts @@ -1,15 +1,15 @@ import { type ApolloCache } from '@apollo/client'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; import { triggerUpdateGroupByQueriesOptimisticEffect } from '@/apollo/optimistic-effect/group-by/utils/triggerUpdateGroupByQueriesOptimisticEffect'; describe('triggerUpdateGroupByQueriesOptimisticEffect', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { nameSingular: 'person', namePlural: 'people', - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const mockRecord: RecordGqlNode = { __typename: 'Person', diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/processGroupByConnectionWithRecords.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/processGroupByConnectionWithRecords.ts index 52850de85b..6eab0e7745 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/processGroupByConnectionWithRecords.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/processGroupByConnectionWithRecords.ts @@ -1,5 +1,5 @@ import { doesRecordBelongToGroup } from '@/apollo/optimistic-effect/group-by/utils/doesRecordBelongToGroup'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { createCacheEdgeWithRecordRef } from '@/object-record/cache/utils/createCacheEdgeWithRecordRef'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; @@ -26,7 +26,7 @@ type ProcessGroupByConnectionWithRecordsArgs = { groupByConfig?: | Array>> | Record>; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; readField: ReadFieldFunction; toReference: ToReferenceFunction; }; diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/triggerUpdateGroupByQueriesOptimisticEffect.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/triggerUpdateGroupByQueriesOptimisticEffect.ts index a192d3e99f..266d2d1f76 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/triggerUpdateGroupByQueriesOptimisticEffect.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/group-by/utils/triggerUpdateGroupByQueriesOptimisticEffect.ts @@ -3,7 +3,7 @@ import { type ApolloCache, type StoreObject } from '@apollo/client'; import { normalizeGroupByDimensionValue } from '@/apollo/optimistic-effect/group-by/utils/normalizeGroupByDimensionValue'; import { processGroupByConnectionWithRecords } from '@/apollo/optimistic-effect/group-by/utils/processGroupByConnectionWithRecords'; import { type CachedObjectRecordQueryVariables } from '@/apollo/types/CachedObjectRecordQueryVariables'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { createCacheEdgeWithRecordRef } from '@/object-record/cache/utils/createCacheEdgeWithRecordRef'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; @@ -16,7 +16,7 @@ import { parseApolloStoreFieldName } from '~/utils/parseApolloStoreFieldName'; type TriggerUpdateGroupByQueriesOptimisticEffectArgs = { cache: ApolloCache; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; operation: 'create' | 'update' | 'delete'; records: RecordGqlNode[]; shouldMatchRootQueryFilter?: boolean; diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerAttachRelationOptimisticEffect.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerAttachRelationOptimisticEffect.ts index 23b9bde453..c0c0163c07 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerAttachRelationOptimisticEffect.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerAttachRelationOptimisticEffect.ts @@ -1,6 +1,6 @@ import { type ApolloCache, type StoreObject } from '@apollo/client'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache'; import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode'; @@ -24,12 +24,12 @@ export const triggerAttachRelationOptimisticEffect = ({ sourceObjectNameSingular: string; sourceRecordId: string; targetObjectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'nameSingular' | 'id' | 'readableFields' >; fieldNameOnTargetRecord: string; targetRecordId: string; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectPermissionsByObjectMetadataId: Record< string, ObjectPermissions & { objectMetadataId: string } diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect.ts index c6d77110af..188d709b0d 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect.ts @@ -2,7 +2,7 @@ import { type ApolloCache, type StoreObject } from '@apollo/client'; import { isNonEmptyString } from '@sniptt/guards'; import { triggerUpdateRelationsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRelationsOptimisticEffect'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { getEdgeTypename } from '@/object-record/cache/utils/getEdgeTypename'; import { isObjectRecordConnectionWithRefs } from '@/object-record/cache/utils/isObjectRecordConnectionWithRefs'; @@ -26,9 +26,9 @@ import { parseApolloStoreFieldName } from '~/utils/parseApolloStoreFieldName'; */ type TriggerCreateRecordsOptimisticEffectArgs = { cache: ApolloCache; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordsToCreate: RecordGqlNode[]; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; shouldMatchRootQueryFilter?: boolean; checkForRecordInCache?: boolean; objectPermissionsByObjectMetadataId: Record< diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect.ts index 7f704b3234..8190393d5b 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect.ts @@ -3,7 +3,7 @@ import { type ApolloCache, type StoreObject } from '@apollo/client'; import { triggerUpdateGroupByQueriesOptimisticEffect } from '@/apollo/optimistic-effect/group-by/utils/triggerUpdateGroupByQueriesOptimisticEffect'; import { triggerUpdateRelationsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRelationsOptimisticEffect'; import { type CachedObjectRecordQueryVariables } from '@/apollo/types/CachedObjectRecordQueryVariables'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { isObjectRecordConnection } from '@/object-record/cache/utils/isObjectRecordConnection'; import { isObjectRecordConnectionWithRefs } from '@/object-record/cache/utils/isObjectRecordConnectionWithRefs'; @@ -23,9 +23,9 @@ export const triggerDestroyRecordsOptimisticEffect = ({ objectPermissionsByObjectMetadataId, }: { cache: ApolloCache; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordsToDestroy: RecordGqlNode[]; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; upsertRecordsInStore: (props: { partialRecords: ObjectRecord[] }) => void; objectPermissionsByObjectMetadataId: Record< string, diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerDetachRelationOptimisticEffect.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerDetachRelationOptimisticEffect.ts index cff492ffed..e2319084c1 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerDetachRelationOptimisticEffect.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerDetachRelationOptimisticEffect.ts @@ -1,6 +1,6 @@ import { type ApolloCache, type StoreObject } from '@apollo/client'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache'; import { isObjectRecordConnectionWithRefs } from '@/object-record/cache/utils/isObjectRecordConnectionWithRefs'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; @@ -22,12 +22,12 @@ export const triggerDetachRelationOptimisticEffect = ({ sourceObjectNameSingular: string; sourceRecordId: string; targetObjectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'nameSingular' | 'id' | 'readableFields' >; fieldNameOnTargetRecord: string; targetRecordId: string; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectPermissionsByObjectMetadataId: Record< string, ObjectPermissions & { objectMetadataId: string } diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect.ts index 836b85271d..6a26b43c14 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect.ts @@ -4,7 +4,7 @@ import { triggerUpdateGroupByQueriesOptimisticEffect } from '@/apollo/optimistic import { sortCachedObjectEdges } from '@/apollo/optimistic-effect/utils/sortCachedObjectEdges'; import { triggerUpdateRelationsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRelationsOptimisticEffect'; import { type CachedObjectRecordQueryVariables } from '@/apollo/types/CachedObjectRecordQueryVariables'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { getEdgeTypename } from '@/object-record/cache/utils/getEdgeTypename'; import { isObjectRecordConnectionWithRefs } from '@/object-record/cache/utils/isObjectRecordConnectionWithRefs'; @@ -26,10 +26,10 @@ export const triggerUpdateRecordOptimisticEffect = ({ upsertRecordsInStore, }: { cache: ApolloCache; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; currentRecord: RecordGqlNode; updatedRecord: RecordGqlNode; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectPermissionsByObjectMetadataId: Record< string, ObjectPermissions & { objectMetadataId: string } diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch.ts index 0fae1c7d00..7aab689109 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch.ts @@ -4,7 +4,7 @@ import { triggerUpdateGroupByQueriesOptimisticEffect } from '@/apollo/optimistic import { sortCachedObjectEdges } from '@/apollo/optimistic-effect/utils/sortCachedObjectEdges'; import { triggerUpdateRelationsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRelationsOptimisticEffect'; import { type CachedObjectRecordQueryVariables } from '@/apollo/types/CachedObjectRecordQueryVariables'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { getEdgeTypename } from '@/object-record/cache/utils/getEdgeTypename'; import { isObjectRecordConnectionWithRefs } from '@/object-record/cache/utils/isObjectRecordConnectionWithRefs'; @@ -27,10 +27,10 @@ export const triggerUpdateRecordOptimisticEffectByBatch = ({ upsertRecordsInStore, }: { cache: ApolloCache; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; currentRecords: RecordGqlNode[]; updatedRecords: RecordGqlNode[]; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectPermissionsByObjectMetadataId: Record< string, ObjectPermissions & { objectMetadataId: string } diff --git a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRelationsOptimisticEffect.ts b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRelationsOptimisticEffect.ts index 8db830db0a..24bdee2ee2 100644 --- a/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRelationsOptimisticEffect.ts +++ b/packages/twenty-front/src/modules/apollo/optimistic-effect/utils/triggerUpdateRelationsOptimisticEffect.ts @@ -10,7 +10,7 @@ import { } from 'twenty-shared/types'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { type FieldMetadataItemRelation } from '@/object-metadata/types/FieldMetadataItemRelation'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getFieldMetadataItemById } from '@/object-metadata/utils/getFieldMetadataItemById'; import { type RecordGqlConnectionEdgesRequired } from '@/object-record/graphql/types/RecordGqlConnectionEdgesRequired'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; @@ -28,10 +28,10 @@ import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; type TriggerUpdateRelationsOptimisticEffectArgs = { cache: ApolloCache; - sourceObjectMetadataItem: ObjectMetadataItem; + sourceObjectMetadataItem: EnrichedObjectMetadataItem; currentSourceRecord: RecordGqlNode | null; updatedSourceRecord: RecordGqlNode | null; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectPermissionsByObjectMetadataId: Record< string, ObjectPermissions & { objectMetadataId: string } @@ -104,8 +104,8 @@ const triggerUpdateRelationOptimisticEffect = ({ fieldMetadataItemOnSourceRecord: FieldMetadataItem; updatedSourceRecord: RecordGqlNode | null; currentSourceRecord: RecordGqlNode | null; - objectMetadataItems: ObjectMetadataItem[]; - sourceObjectMetadataItem: ObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; + sourceObjectMetadataItem: EnrichedObjectMetadataItem; cache: ApolloCache; isDeletion: boolean; upsertRecordsInStore: (props: { partialRecords: ObjectRecord[] }) => void; @@ -260,8 +260,8 @@ const triggerUpdateMorphRelationOptimisticEffect = ({ fieldMetadataItemOnSourceRecord: FieldMetadataItem; updatedSourceRecord: RecordGqlNode | null; currentSourceRecord: RecordGqlNode | null; - objectMetadataItems: ObjectMetadataItem[]; - sourceObjectMetadataItem: ObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; + sourceObjectMetadataItem: EnrichedObjectMetadataItem; cache: ApolloCache; isDeletion: boolean; upsertRecordsInStore: (props: { partialRecords: ObjectRecord[] }) => void; diff --git a/packages/twenty-front/src/modules/browser-event/types/ObjectRecordOperationBrowserEventDetail.ts b/packages/twenty-front/src/modules/browser-event/types/ObjectRecordOperationBrowserEventDetail.ts index 846344bf5c..2641e97389 100644 --- a/packages/twenty-front/src/modules/browser-event/types/ObjectRecordOperationBrowserEventDetail.ts +++ b/packages/twenty-front/src/modules/browser-event/types/ObjectRecordOperationBrowserEventDetail.ts @@ -1,7 +1,7 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectRecordOperation } from '@/object-record/types/ObjectRecordOperation'; export type ObjectRecordOperationBrowserEventDetail = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; operation: ObjectRecordOperation; }; diff --git a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProvider.tsx b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProvider.tsx index 53eaae76dd..28b4183762 100644 --- a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProvider.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProvider.tsx @@ -1,7 +1,7 @@ import { type CommandMenuContextType } from '@/command-menu-item/contexts/CommandMenuContext'; import { CommandMenuContextProviderLegacy } from '@/command-menu-item/contexts/CommandMenuContextProviderLegacy'; import { CommandMenuContextProviderServerItems } from '@/command-menu-item/server-items/contexts/CommandMenuContextProviderServerItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; import { FeatureFlagKey } from '~/generated-metadata/graphql'; @@ -13,7 +13,7 @@ export const CommandMenuContextProvider = ({ objectMetadataItemOverride, }: Omit & { children: React.ReactNode; - objectMetadataItemOverride?: ObjectMetadataItem; + objectMetadataItemOverride?: EnrichedObjectMetadataItem; }) => { const isCommandMenuItemEnabled = useIsFeatureEnabled( FeatureFlagKey.IS_COMMAND_MENU_ITEM_ENABLED, diff --git a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderDefault.tsx b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderDefault.tsx index da7e5f4522..5d295be5ce 100644 --- a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderDefault.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderDefault.tsx @@ -7,7 +7,7 @@ import { useShouldCommandMenuItemBeRegisteredParams } from '@/command-menu-item/ import { useRunWorkflowRecordAgnosticCommands } from '@/command-menu-item/record-agnostic/workflow/hooks/useRunWorkflowRecordAgnosticCommands'; import { useRunWorkflowRecordCommands } from '@/command-menu-item/record/workflow/hooks/useRunWorkflowRecordCommands'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; export const CommandMenuContextProviderDefault = ({ @@ -17,7 +17,7 @@ export const CommandMenuContextProviderDefault = ({ containerType, children, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; isInSidePanel: CommandMenuContextType['isInSidePanel']; displayType: CommandMenuContextType['displayType']; containerType: CommandMenuContextType['containerType']; diff --git a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderLegacy.tsx b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderLegacy.tsx index 5cb4461709..9cf9805d99 100644 --- a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderLegacy.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderLegacy.tsx @@ -4,7 +4,7 @@ import { CommandMenuContextProviderWorkflowObjects } from '@/command-menu-item/c import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { isDefined } from 'twenty-shared/utils'; @@ -17,7 +17,7 @@ export const CommandMenuContextProviderLegacy = ({ objectMetadataItemOverride, }: Omit & { children: React.ReactNode; - objectMetadataItemOverride?: ObjectMetadataItem; + objectMetadataItemOverride?: EnrichedObjectMetadataItem; }) => { const contextStoreCurrentObjectMetadataItemId = useAtomComponentStateValue( contextStoreCurrentObjectMetadataItemIdComponentState, diff --git a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderWorkflowObjects.tsx b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderWorkflowObjects.tsx index 9d57ecf35a..a97ca36654 100644 --- a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderWorkflowObjects.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderWorkflowObjects.tsx @@ -6,7 +6,7 @@ import { useRegisteredCommandMenuItems } from '@/command-menu-item/hooks/useRegi import { useShouldCommandMenuItemBeRegisteredParams } from '@/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams'; import { useRunWorkflowRecordAgnosticCommands } from '@/command-menu-item/record-agnostic/workflow/hooks/useRunWorkflowRecordAgnosticCommands'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue'; @@ -15,7 +15,7 @@ import { type WorkflowWithCurrentVersion } from '@/workflow/types/Workflow'; import { isDefined } from 'twenty-shared/utils'; type CommandMenuContextProviderWorkflowObjectsProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; isInSidePanel: CommandMenuContextType['isInSidePanel']; displayType: CommandMenuContextType['displayType']; containerType: CommandMenuContextType['containerType']; diff --git a/packages/twenty-front/src/modules/command-menu-item/engine-command/record/multiple-records/components/ExportMultipleRecordsCommand.tsx b/packages/twenty-front/src/modules/command-menu-item/engine-command/record/multiple-records/components/ExportMultipleRecordsCommand.tsx index 1632c688a3..c6814ca0f9 100644 --- a/packages/twenty-front/src/modules/command-menu-item/engine-command/record/multiple-records/components/ExportMultipleRecordsCommand.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/engine-command/record/multiple-records/components/ExportMultipleRecordsCommand.tsx @@ -2,7 +2,7 @@ import { HeadlessEngineCommandWrapperEffect } from '@/command-menu-item/engine-c import { useMountedEngineCommandContext } from '@/command-menu-item/engine-command/hooks/useMountedEngineCommandContext'; import { EngineCommandComponentInstanceContext } from '@/command-menu-item/engine-command/states/contexts/EngineCommandComponentInstanceContext'; import { commandMenuItemProgressFamilyState } from '@/command-menu-item/states/commandMenuItemProgressFamilyState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useRecordIndexExportRecords } from '@/object-record/record-index/export/hooks/useRecordIndexExportRecords'; import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow'; import { useSetAtomFamilyState } from '@/ui/utilities/state/jotai/hooks/useSetAtomFamilyState'; @@ -15,7 +15,7 @@ const ExportMultipleRecordsCommandContent = ({ recordIndexId, setCommandMenuItemProgress, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordIndexId: string; setCommandMenuItemProgress: (value: number | undefined) => void; }) => { diff --git a/packages/twenty-front/src/modules/command-menu-item/engine-command/types/MountedEngineCommandContext.ts b/packages/twenty-front/src/modules/command-menu-item/engine-command/types/MountedEngineCommandContext.ts index e12203254c..5e1fd8f45a 100644 --- a/packages/twenty-front/src/modules/command-menu-item/engine-command/types/MountedEngineCommandContext.ts +++ b/packages/twenty-front/src/modules/command-menu-item/engine-command/types/MountedEngineCommandContext.ts @@ -1,5 +1,5 @@ import { type ContextStoreTargetedRecordsRule } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { type Nullable, @@ -10,7 +10,7 @@ import { type EngineComponentKey } from '~/generated-metadata/graphql'; export type MountedEngineCommandState = { engineComponentKey: EngineComponentKey; contextStoreInstanceId: string; - objectMetadataItem: Nullable; + objectMetadataItem: Nullable; currentViewId: Nullable; recordIndexId: Nullable; targetedRecordsRule: ContextStoreTargetedRecordsRule; diff --git a/packages/twenty-front/src/modules/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams.ts b/packages/twenty-front/src/modules/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams.ts index a3a83212cc..8a71f74054 100644 --- a/packages/twenty-front/src/modules/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams.ts +++ b/packages/twenty-front/src/modules/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams.ts @@ -9,7 +9,7 @@ import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/s import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType'; import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useObjectPermissionsForObject } from '@/object-record/hooks/useObjectPermissionsForObject'; import { hasAnySoftDeleteFilterOnViewComponentSelector } from '@/object-record/record-filter/states/hasAnySoftDeleteFilterOnView'; import { useRecordIndexIdFromCurrentContextStore } from '@/object-record/record-index/hooks/useRecordIndexIdFromCurrentContextStore'; @@ -26,7 +26,7 @@ import type { FeatureFlagKey } from '~/generated-metadata/graphql'; export const useShouldCommandMenuItemBeRegisteredParams = ({ objectMetadataItem, }: { - objectMetadataItem?: ObjectMetadataItem; + objectMetadataItem?: EnrichedObjectMetadataItem; }): ShouldBeRegisteredFunctionParams => { const store = useStore(); const { navigationMenuItems } = useNavigationMenuItemsData(); diff --git a/packages/twenty-front/src/modules/command-menu-item/record-agnostic/hooks/__tests__/useRelatedRecordCommands.test.tsx b/packages/twenty-front/src/modules/command-menu-item/record-agnostic/hooks/__tests__/useRelatedRecordCommands.test.tsx index f11e54b03c..d4a9434551 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record-agnostic/hooks/__tests__/useRelatedRecordCommands.test.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/record-agnostic/hooks/__tests__/useRelatedRecordCommands.test.tsx @@ -1,5 +1,5 @@ import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { renderHook } from '@testing-library/react'; import { useRelatedRecordCommands } from '@/command-menu-item/record-agnostic/hooks/useRelatedRecordCommands'; @@ -34,7 +34,7 @@ describe('useRelatedRecordCommands', () => { fields: [], readableFields: [], updatableFields: [], - } as unknown as ObjectMetadataItem; + } as unknown as EnrichedObjectMetadataItem; const { result } = renderHook(() => useRelatedRecordCommands({ @@ -48,7 +48,8 @@ describe('useRelatedRecordCommands', () => { }); it('should return empty object when objectMetadataItem is undefined', () => { - const objectMetadataItem = undefined as unknown as ObjectMetadataItem; + const objectMetadataItem = + undefined as unknown as EnrichedObjectMetadataItem; const { result } = renderHook(() => useRelatedRecordCommands({ @@ -92,7 +93,7 @@ describe('useRelatedRecordCommands', () => { fields, readableFields: fields, updatableFields: fields, - } as unknown as ObjectMetadataItem; + } as unknown as EnrichedObjectMetadataItem; const { result } = renderHook(() => useRelatedRecordCommands({ @@ -142,7 +143,7 @@ describe('useRelatedRecordCommands', () => { fields, readableFields: fields, updatableFields: fields, - } as unknown as ObjectMetadataItem; + } as unknown as EnrichedObjectMetadataItem; const { result } = renderHook(() => useRelatedRecordCommands({ @@ -188,7 +189,7 @@ describe('useRelatedRecordCommands', () => { fields, readableFields: fields, updatableFields: fields, - } as unknown as ObjectMetadataItem; + } as unknown as EnrichedObjectMetadataItem; const { result } = renderHook(() => useRelatedRecordCommands({ @@ -234,7 +235,7 @@ describe('useRelatedRecordCommands', () => { fields, readableFields: fields, updatableFields: fields, - } as unknown as ObjectMetadataItem; + } as unknown as EnrichedObjectMetadataItem; const { result } = renderHook(() => useRelatedRecordCommands({ diff --git a/packages/twenty-front/src/modules/command-menu-item/record-agnostic/hooks/useRelatedRecordCommands.ts b/packages/twenty-front/src/modules/command-menu-item/record-agnostic/hooks/useRelatedRecordCommands.ts index d91a488244..63176b6f1c 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record-agnostic/hooks/useRelatedRecordCommands.ts +++ b/packages/twenty-front/src/modules/command-menu-item/record-agnostic/hooks/useRelatedRecordCommands.ts @@ -7,7 +7,7 @@ import { CoreObjectNameSingular, } from 'twenty-shared/types'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { isRecordReadOnly } from '@/object-record/read-only/utils/isRecordReadOnly'; import { msg } from '@lingui/core/macro'; @@ -16,7 +16,7 @@ import { isDefined } from 'twenty-shared/utils'; import { type IconComponent, IconPlus } from 'twenty-ui/display'; interface GenerateRelatedRecordCommandsParams { - sourceObjectMetadataItem?: ObjectMetadataItem; + sourceObjectMetadataItem?: EnrichedObjectMetadataItem; getIcon: (iconKey: string) => IconComponent; startPosition: number; } diff --git a/packages/twenty-front/src/modules/command-menu-item/record/workflow/hooks/useRunWorkflowRecordCommands.tsx b/packages/twenty-front/src/modules/command-menu-item/record/workflow/hooks/useRunWorkflowRecordCommands.tsx index 74b15870ac..c0b21d9d48 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record/workflow/hooks/useRunWorkflowRecordCommands.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/record/workflow/hooks/useRunWorkflowRecordCommands.tsx @@ -4,7 +4,7 @@ import { CommandMenuItemScope } from '@/command-menu-item/types/CommandMenuItemS import { CommandMenuItemType } from '@/command-menu-item/types/CommandMenuItemType'; import { contextStoreIsPageInEditModeComponentState } from '@/context-store/states/contextStoreIsPageInEditModeComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; @@ -24,7 +24,7 @@ export const useRunWorkflowRecordCommands = ({ objectMetadataItem, skip, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; skip?: boolean; }) => { const store = useStore(); diff --git a/packages/twenty-front/src/modules/command-menu-item/types/ShouldBeRegisteredFunctionParams.ts b/packages/twenty-front/src/modules/command-menu-item/types/ShouldBeRegisteredFunctionParams.ts index b4f00e2921..398518704f 100644 --- a/packages/twenty-front/src/modules/command-menu-item/types/ShouldBeRegisteredFunctionParams.ts +++ b/packages/twenty-front/src/modules/command-menu-item/types/ShouldBeRegisteredFunctionParams.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { type WorkflowWithCurrentVersion } from '@/workflow/types/Workflow'; @@ -9,7 +9,7 @@ import { import { type FeatureFlagKey } from '~/generated-metadata/graphql'; export type ShouldBeRegisteredFunctionParams = { - objectMetadataItem?: ObjectMetadataItem; + objectMetadataItem?: EnrichedObjectMetadataItem; objectPermissions: ObjectPermissions; recordFilters?: RecordFilter[]; isShowPage?: boolean; diff --git a/packages/twenty-front/src/modules/command-menu-item/utils/getCommandMenuItemConfig.ts b/packages/twenty-front/src/modules/command-menu-item/utils/getCommandMenuItemConfig.ts index ab42f46718..905a79c538 100644 --- a/packages/twenty-front/src/modules/command-menu-item/utils/getCommandMenuItemConfig.ts +++ b/packages/twenty-front/src/modules/command-menu-item/utils/getCommandMenuItemConfig.ts @@ -6,13 +6,13 @@ import { WORKFLOW_VERSIONS_COMMAND_MENU_ITEMS_CONFIG } from '@/command-menu-item import { WORKSPACE_MEMBERS_COMMAND_MENU_ITEMS_CONFIG } from '@/command-menu-item/record/constants/WorkspaceMembersCommandMenuItemsConfig'; import { type CommandMenuItemConfig } from '@/command-menu-item/types/CommandMenuItemConfig'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; export const getCommandMenuItemConfig = ({ objectMetadataItem, }: { - objectMetadataItem?: ObjectMetadataItem; + objectMetadataItem?: EnrichedObjectMetadataItem; }): Record => { if (!isDefined(objectMetadataItem)) { return {}; diff --git a/packages/twenty-front/src/modules/command-menu/hooks/__tests__/useSetGlobalCommandMenuContext.test.tsx b/packages/twenty-front/src/modules/command-menu/hooks/__tests__/useSetGlobalCommandMenuContext.test.tsx index 2fab803af6..9ce9e1e8bc 100644 --- a/packages/twenty-front/src/modules/command-menu/hooks/__tests__/useSetGlobalCommandMenuContext.test.tsx +++ b/packages/twenty-front/src/modules/command-menu/hooks/__tests__/useSetGlobalCommandMenuContext.test.tsx @@ -17,12 +17,13 @@ import { recordStoreFamilyState } from '@/object-record/record-store/states/reco import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; import { mockedPersonRecords } from '~/testing/mock-data/generated/data/people/mock-people-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { contextStoreFilterGroupsComponentState } from '@/context-store/states/contextStoreFilterGroupsComponentState'; -const personMockObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -)!; +const personMockObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + )!; const peopleMock = [...mockedPersonRecords]; diff --git a/packages/twenty-front/src/modules/command-menu/hooks/__tests__/useWorkflowCommandMenu.test.tsx b/packages/twenty-front/src/modules/command-menu/hooks/__tests__/useWorkflowCommandMenu.test.tsx index fb7ac618d0..f09c7b6373 100644 --- a/packages/twenty-front/src/modules/command-menu/hooks/__tests__/useWorkflowCommandMenu.test.tsx +++ b/packages/twenty-front/src/modules/command-menu/hooks/__tests__/useWorkflowCommandMenu.test.tsx @@ -16,7 +16,7 @@ import { act } from 'react'; import { SidePanelPages } from 'twenty-shared/types'; import { IconBolt, IconSettingsAutomation, useIcons } from 'twenty-ui/display'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('mocked-uuid'), @@ -29,9 +29,10 @@ jest.mock('@/side-panel/hooks/useNavigateSidePanel', () => ({ }), })); -const workflowMockObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'workflow', -)!; +const workflowMockObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'workflow', + )!; jest.mock('@/object-metadata/hooks/useObjectMetadataItem', () => ({ useObjectMetadataItem: jest.fn(() => ({ diff --git a/packages/twenty-front/src/modules/context-store/components/MainContextStoreProviderEffect.tsx b/packages/twenty-front/src/modules/context-store/components/MainContextStoreProviderEffect.tsx index b1f6306609..c900a7683d 100644 --- a/packages/twenty-front/src/modules/context-store/components/MainContextStoreProviderEffect.tsx +++ b/packages/twenty-front/src/modules/context-store/components/MainContextStoreProviderEffect.tsx @@ -5,7 +5,7 @@ import { contextStoreCurrentViewTypeComponentState } from '@/context-store/state import { getViewType } from '@/context-store/utils/getViewType'; import { useSetLastVisitedObjectMetadataId } from '@/navigation/hooks/useSetLastVisitedObjectMetadataId'; import { useSetLastVisitedViewForObjectMetadataNamePlural } from '@/navigation/hooks/useSetLastVisitedViewForObjectMetadataNamePlural'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useAtomComponentState } from '@/ui/utilities/state/jotai/hooks/useAtomComponentState'; import { useAtomFamilySelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilySelectorValue'; import { viewFromViewIdFamilySelector } from '@/views/states/selectors/viewFromViewIdFamilySelector'; @@ -13,7 +13,7 @@ import { useEffect } from 'react'; type MainContextStoreProviderEffectProps = { viewId?: string; - objectMetadataItem?: ObjectMetadataItem; + objectMetadataItem?: EnrichedObjectMetadataItem; isRecordIndexPage: boolean; isRecordShowPage: boolean; isSettingsPage: boolean; diff --git a/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts b/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts index f77bceb20d..585dfc7e4e 100644 --- a/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts +++ b/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts @@ -5,12 +5,13 @@ import { type RecordFilterValueDependencies, ViewFilterOperand, } from 'twenty-shared/types'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; describe('computeContextStoreFilters', () => { - const personObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', - )!; + const personObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + )!; const mockFilterValueDependencies: RecordFilterValueDependencies = { currentWorkspaceMemberId: '32219445-f587-4c40-b2b1-6d3205ed96da', diff --git a/packages/twenty-front/src/modules/context-store/utils/computeContextStoreFilters.ts b/packages/twenty-front/src/modules/context-store/utils/computeContextStoreFilters.ts index f37e60f9a1..24e3e34b17 100644 --- a/packages/twenty-front/src/modules/context-store/utils/computeContextStoreFilters.ts +++ b/packages/twenty-front/src/modules/context-store/utils/computeContextStoreFilters.ts @@ -1,5 +1,5 @@ import { type ContextStoreTargetedRecordsRule } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { makeAndFilterVariables } from '@/object-record/utils/makeAndFilterVariables'; @@ -16,7 +16,7 @@ type ComputeContextStoreFiltersProps = { contextStoreTargetedRecordsRule: ContextStoreTargetedRecordsRule; contextStoreFilters: RecordFilter[]; contextStoreFilterGroups: RecordFilterGroup[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; filterValueDependencies: RecordFilterValueDependencies; contextStoreAnyFieldFilterValue: string; }; diff --git a/packages/twenty-front/src/modules/metadata-store/hooks/useLoadMockedMinimalMetadata.ts b/packages/twenty-front/src/modules/metadata-store/hooks/useLoadMockedMinimalMetadata.ts index f44562bedc..69abdd8be2 100644 --- a/packages/twenty-front/src/modules/metadata-store/hooks/useLoadMockedMinimalMetadata.ts +++ b/packages/twenty-front/src/modules/metadata-store/hooks/useLoadMockedMinimalMetadata.ts @@ -1,5 +1,5 @@ import { useMetadataStore } from '@/metadata-store/hooks/useMetadataStore'; -import { splitObjectMetadataItemWithRelated } from '@/metadata-store/utils/splitObjectMetadataItemWithRelated'; +import { splitObjectMetadataGqlResponse } from '@/metadata-store/utils/splitObjectMetadataGqlResponse'; import { splitViewWithRelated } from '@/metadata-store/utils/splitViewWithRelated'; import { useCallback } from 'react'; @@ -9,23 +9,27 @@ export const useLoadMockedMinimalMetadata = () => { const { replaceDraft, applyChanges, resetMetadataStore } = useMetadataStore(); const loadMockedMinimalMetadata = useCallback(async () => { - resetMetadataStore(); const [ - { generatedMockObjectMetadataItemsWithRelated }, + { mockedStandardObjectMetadataQueryResult }, { mockedViews }, { mockedNavigationMenuItems }, ] = await Promise.all([ - import('~/testing/utils/generatedMockObjectMetadataItemsWithRelated'), + import( + '~/testing/mock-data/generated/metadata/objects/mock-objects-metadata' + ), import('~/testing/mock-data/generated/metadata/views/mock-views-data'), import( '~/testing/mock-data/generated/metadata/navigation-menu-items/mock-navigation-menu-items-data' ), ]); + // Reset after async imports so reset + replaceDraft + applyChanges + // run in the same synchronous block (React 18 batches them into one render), + // avoiding a window where the store appears empty to subscribers. + resetMetadataStore(); + const { flatObjects, flatFields, flatIndexes } = - splitObjectMetadataItemWithRelated( - generatedMockObjectMetadataItemsWithRelated, - ); + splitObjectMetadataGqlResponse(mockedStandardObjectMetadataQueryResult); replaceDraft('objectMetadataItems', flatObjects, MOCKED_COLLECTION_HASH); replaceDraft('fieldMetadataItems', flatFields, MOCKED_COLLECTION_HASH); diff --git a/packages/twenty-front/src/modules/metadata-store/hooks/useLoadStaleMetadataEntities.ts b/packages/twenty-front/src/modules/metadata-store/hooks/useLoadStaleMetadataEntities.ts index 046ec79057..0c1d9131e6 100644 --- a/packages/twenty-front/src/modules/metadata-store/hooks/useLoadStaleMetadataEntities.ts +++ b/packages/twenty-front/src/modules/metadata-store/hooks/useLoadStaleMetadataEntities.ts @@ -1,10 +1,9 @@ import { useMetadataStore } from '@/metadata-store/hooks/useMetadataStore'; import { type MetadataEntityKey } from '@/metadata-store/states/metadataStoreState'; -import { splitObjectMetadataItemWithRelated } from '@/metadata-store/utils/splitObjectMetadataItemWithRelated'; +import { splitObjectMetadataGqlResponse } from '@/metadata-store/utils/splitObjectMetadataGqlResponse'; import { splitPageLayoutWithRelated } from '@/metadata-store/utils/splitPageLayoutWithRelated'; import { splitViewWithRelated } from '@/metadata-store/utils/splitViewWithRelated'; import { FIND_MANY_OBJECT_METADATA_ITEMS } from '@/object-metadata/graphql/queries'; -import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '@/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems'; import { transformPageLayout } from '@/page-layout/utils/transformPageLayout'; import { logicFunctionsState } from '@/settings/logic-functions/states/logicFunctionsState'; import { useApolloClient } from '@apollo/client/react'; @@ -72,13 +71,8 @@ export const useLoadStaleMetadataEntities = () => { fetchPolicy: 'network-only', }) .then((result) => { - const compositeObjects = - mapPaginatedObjectMetadataItemsToObjectMetadataItems({ - pagedObjectMetadataItems: result.data, - }); - const { flatObjects, flatFields, flatIndexes } = - splitObjectMetadataItemWithRelated(compositeObjects); + splitObjectMetadataGqlResponse(result.data); replaceDraft('objectMetadataItems', flatObjects); replaceDraft('fieldMetadataItems', flatFields); diff --git a/packages/twenty-front/src/modules/metadata-store/types/FlatObjectMetadataItem.ts b/packages/twenty-front/src/modules/metadata-store/types/FlatObjectMetadataItem.ts index bcb0af1583..3ec73c22a0 100644 --- a/packages/twenty-front/src/modules/metadata-store/types/FlatObjectMetadataItem.ts +++ b/packages/twenty-front/src/modules/metadata-store/types/FlatObjectMetadataItem.ts @@ -1,6 +1,6 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export type FlatObjectMetadataItem = Omit< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'readableFields' | 'updatableFields' | 'indexMetadatas' >; diff --git a/packages/twenty-front/src/modules/metadata-store/utils/splitObjectMetadataItemWithRelated.ts b/packages/twenty-front/src/modules/metadata-store/utils/splitCompositeObjectMetadataItems.ts similarity index 63% rename from packages/twenty-front/src/modules/metadata-store/utils/splitObjectMetadataItemWithRelated.ts rename to packages/twenty-front/src/modules/metadata-store/utils/splitCompositeObjectMetadataItems.ts index b063a0657e..c91b2e1476 100644 --- a/packages/twenty-front/src/modules/metadata-store/utils/splitObjectMetadataItemWithRelated.ts +++ b/packages/twenty-front/src/modules/metadata-store/utils/splitCompositeObjectMetadataItems.ts @@ -1,12 +1,7 @@ import { type FlatFieldMetadataItem } from '@/metadata-store/types/FlatFieldMetadataItem'; import { type FlatIndexMetadataItem } from '@/metadata-store/types/FlatIndexMetadataItem'; import { type FlatObjectMetadataItem } from '@/metadata-store/types/FlatObjectMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; - -export type ObjectMetadataItemWithRelated = Omit< - ObjectMetadataItem, - 'readableFields' | 'updatableFields' ->; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; type SplitResult = { flatObjects: FlatObjectMetadataItem[]; @@ -14,33 +9,36 @@ type SplitResult = { flatIndexes: FlatIndexMetadataItem[]; }; -export const splitObjectMetadataItemWithRelated = ( - objectMetadataItemsWithRelated: ObjectMetadataItemWithRelated[], +export const splitCompositeObjectMetadataItems = ( + compositeObjectMetadataItems: Omit< + EnrichedObjectMetadataItem, + 'readableFields' | 'updatableFields' + >[], ): SplitResult => { const flatObjects: FlatObjectMetadataItem[] = []; const flatFields: FlatFieldMetadataItem[] = []; const flatIndexes: FlatIndexMetadataItem[] = []; - for (const objectMetadataItemWithRelated of objectMetadataItemsWithRelated) { + for (const compositeObject of compositeObjectMetadataItems) { const { fields = [], indexMetadatas = [], ...objectProperties - } = objectMetadataItemWithRelated; + } = compositeObject; flatObjects.push(objectProperties); for (const field of fields) { flatFields.push({ ...field, - objectMetadataId: objectMetadataItemWithRelated.id, + objectMetadataId: compositeObject.id, }); } for (const index of indexMetadatas) { flatIndexes.push({ ...index, - objectMetadataId: objectMetadataItemWithRelated.id, + objectMetadataId: compositeObject.id, }); } } diff --git a/packages/twenty-front/src/modules/metadata-store/utils/splitObjectMetadataGqlResponse.ts b/packages/twenty-front/src/modules/metadata-store/utils/splitObjectMetadataGqlResponse.ts new file mode 100644 index 0000000000..b6b225f3dd --- /dev/null +++ b/packages/twenty-front/src/modules/metadata-store/utils/splitObjectMetadataGqlResponse.ts @@ -0,0 +1,51 @@ +import { type FlatFieldMetadataItem } from '@/metadata-store/types/FlatFieldMetadataItem'; +import { type FlatIndexMetadataItem } from '@/metadata-store/types/FlatIndexMetadataItem'; +import { type FlatObjectMetadataItem } from '@/metadata-store/types/FlatObjectMetadataItem'; +import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '@/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems'; +import { type ObjectMetadataItemsQuery } from '~/generated-metadata/graphql'; + +type SplitResult = { + flatObjects: FlatObjectMetadataItem[]; + flatFields: FlatFieldMetadataItem[]; + flatIndexes: FlatIndexMetadataItem[]; +}; + +export const splitObjectMetadataGqlResponse = ( + pagedObjectMetadataItems: ObjectMetadataItemsQuery | undefined, +): SplitResult => { + const compositeObjects = mapPaginatedObjectMetadataItemsToObjectMetadataItems( + { + pagedObjectMetadataItems, + }, + ); + + const flatObjects: FlatObjectMetadataItem[] = []; + const flatFields: FlatFieldMetadataItem[] = []; + const flatIndexes: FlatIndexMetadataItem[] = []; + + for (const compositeObject of compositeObjects) { + const { + fields = [], + indexMetadatas = [], + ...objectProperties + } = compositeObject; + + flatObjects.push(objectProperties); + + for (const field of fields) { + flatFields.push({ + ...field, + objectMetadataId: compositeObject.id, + }); + } + + for (const index of indexMetadatas) { + flatIndexes.push({ + ...index, + objectMetadataId: compositeObject.id, + }); + } + } + + return { flatObjects, flatFields, flatIndexes }; +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterAndSortNavigationMenuItems.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterAndSortNavigationMenuItems.test.ts index 70c2938d6d..3fe214077e 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterAndSortNavigationMenuItems.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterAndSortNavigationMenuItems.test.ts @@ -1,19 +1,19 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { ViewKey } from '@/views/types/ViewKey'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; describe('filterAndSortNavigationMenuItems', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'metadata-id', nameSingular: 'person', namePlural: 'people', labelPlural: 'People', icon: 'IconUser', - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const mockView: Pick = { id: 'view-id', diff --git a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts index 4be0612492..2e8e41bcfa 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts @@ -1,6 +1,6 @@ import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; jest.mock('@/object-metadata/utils/getAvatarType', () => ({ getAvatarType: jest.fn(() => 'rounded'), @@ -20,9 +20,9 @@ describe('recordIdentifierToObjectRecordIdentifier', () => { imageIdentifier: 'https://example.com/avatar.jpg', }; - const baseObjectMetadataItem: ObjectMetadataItem = { + const baseObjectMetadataItem: EnrichedObjectMetadataItem = { nameSingular: 'person', - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; beforeEach(() => { jest.clearAllMocks(); @@ -53,11 +53,13 @@ describe('recordIdentifierToObjectRecordIdentifier', () => { }); it('should return empty linkToShowPage for targets and workspace member', () => { - const objectMetadataItems: ObjectMetadataItem[] = [ - { nameSingular: CoreObjectNameSingular.NoteTarget } as ObjectMetadataItem, + const objectMetadataItems: EnrichedObjectMetadataItem[] = [ + { + nameSingular: CoreObjectNameSingular.NoteTarget, + } as EnrichedObjectMetadataItem, { nameSingular: CoreObjectNameSingular.WorkspaceMember, - } as ObjectMetadataItem, + } as EnrichedObjectMetadataItem, ]; objectMetadataItems.forEach((objectMetadataItem) => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems.ts index af29fb5f1a..8e07537220 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { NavigationMenuItemType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; @@ -7,7 +7,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const filterAndSortNavigationMenuItems = ( navigationMenuItems: NavigationMenuItem[], views: Pick[], - objectMetadataItems: Pick[], + objectMetadataItems: Pick[], ): NavigationMenuItem[] => { return navigationMenuItems .filter((item) => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier.ts index 28fc33cf27..bf87e16192 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier.ts @@ -1,5 +1,5 @@ import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getAvatarType } from '@/object-metadata/utils/getAvatarType'; import { getBasePathToShowPage } from '@/object-metadata/utils/getBasePathToShowPage'; import { type ObjectRecordIdentifier } from '@/object-record/types/ObjectRecordIdentifier'; @@ -16,7 +16,7 @@ export const recordIdentifierToObjectRecordIdentifier = ({ objectMetadataItem, }: { recordIdentifier: RecordIdentifierDTO; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }): ObjectRecordIdentifier => { const avatarType = getAvatarType(objectMetadataItem.nameSingular); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderSubItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderSubItem.tsx index e2a6e61d39..ffa9d9e4da 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderSubItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderSubItem.tsx @@ -5,7 +5,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; import { getEffectiveNavigationMenuItemColor } from '@/navigation-menu-item/common/utils/getEffectiveNavigationMenuItemColor'; import { NavigationMenuItemIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemIcon'; -import type { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import type { EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem'; import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular'; import { getObjectNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel'; @@ -28,7 +28,7 @@ type NavigationMenuItemFolderSubItemProps = { onClick?: () => void; onNavigationMenuItemClick?: (params: { item: NavigationMenuItem; - objectMetadataItem?: ObjectMetadataItem; + objectMetadataItem?: EnrichedObjectMetadataItem; }) => void; selectedNavigationMenuItemId?: string | null; }; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useNavigationMenuItemSectionItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useNavigationMenuItemSectionItems.ts index 7ceda31038..95a2b4db4b 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useNavigationMenuItemSectionItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useNavigationMenuItemSectionItems.ts @@ -6,7 +6,7 @@ import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/d import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; @@ -18,7 +18,7 @@ import { useSortedNavigationMenuItems } from './useSortedNavigationMenuItems'; export type NavigationMenuItemClickParams = { item: NavigationMenuItem; - objectMetadataItem?: ObjectMetadataItem | null; + objectMetadataItem?: EnrichedObjectMetadataItem | null; }; export const useNavigationMenuItemSectionItems = (): NavigationMenuItem[] => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx index 2be2eda036..0bf46c254f 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx @@ -8,7 +8,7 @@ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier'; import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; @@ -24,7 +24,7 @@ import { Avatar, useIcons } from 'twenty-ui/display'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export type NavigationDrawerItemForObjectMetadataItemProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; navigationMenuItem?: NavigationMenuItem; isSelectedInEditMode?: boolean; onEditModeClick?: () => void; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts index e200c528e2..58e96d095e 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts @@ -1,10 +1,10 @@ -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getObjectNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel'; describe('getObjectNavigationMenuItemSecondaryLabel', () => { it('should return "View" for view object', () => { const result = getObjectNavigationMenuItemSecondaryLabel({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), navigationMenuItemObjectNameSingular: 'view', }); @@ -13,7 +13,7 @@ describe('getObjectNavigationMenuItemSecondaryLabel', () => { it('should return labelSingular for matching object metadata item', () => { const result = getObjectNavigationMenuItemSecondaryLabel({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), navigationMenuItemObjectNameSingular: 'person', }); @@ -22,7 +22,7 @@ describe('getObjectNavigationMenuItemSecondaryLabel', () => { it('should return undefined when object metadata item is not found', () => { const result = getObjectNavigationMenuItemSecondaryLabel({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), navigationMenuItemObjectNameSingular: 'nonexistent', }); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts index 21ad5aaed6..d384776c97 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts @@ -1,19 +1,19 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; -const mockObjectMetadataItems: ObjectMetadataItem[] = [ +const mockObjectMetadataItems: EnrichedObjectMetadataItem[] = [ { id: 'metadata-1', nameSingular: 'person', namePlural: 'people', - } as ObjectMetadataItem, + } as EnrichedObjectMetadataItem, { id: 'metadata-2', nameSingular: 'company', namePlural: 'companies', - } as ObjectMetadataItem, + } as EnrichedObjectMetadataItem, ]; const mockViews: View[] = [ diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular.ts index 1282453778..7623884941 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { NavigationMenuItemType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; @@ -6,7 +6,10 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const getNavigationMenuItemObjectNameSingular = ( item: NavigationMenuItem, - objectMetadataItems: Pick[], + objectMetadataItems: Pick< + EnrichedObjectMetadataItem, + 'id' | 'nameSingular' + >[], views: Pick[], ): string | undefined => { switch (item.type) { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem.ts index eb300cb3d8..373fb5f128 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem.ts @@ -1,7 +1,7 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; @@ -10,9 +10,9 @@ export const getObjectMetadataForNavigationMenuItem = ( NavigationMenuItem, 'type' | 'viewId' | 'targetObjectMetadataId' >, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], views: Pick[], -): ObjectMetadataItem | null => { +): EnrichedObjectMetadataItem | null => { if (navigationMenuItem.type === NavigationMenuItemType.LINK) { return null; } diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts index 6bc9ebaf99..aa578b0d0a 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { ViewKey } from '@/views/types/ViewKey'; import { AppPath } from 'twenty-shared/types'; @@ -7,7 +7,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const getObjectNavigationMenuItemComputedLink = ( item: Pick, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], views: Pick[], ): string => { const objectMetadataItem = objectMetadataItems.find( diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemLabel.ts index 3c043cbd6f..8da839af42 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemLabel.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemLabel.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const getObjectNavigationMenuItemLabel = ( item: Pick, - objectMetadataItems: Pick[], + objectMetadataItems: Pick[], ): string => { const objectMetadataItem = objectMetadataItems.find( (meta) => meta.id === item.targetObjectMetadataId, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel.ts index ac01eac490..6e4c580553 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel.ts @@ -1,8 +1,8 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; type GetObjectNavigationMenuItemSecondaryLabelProps = { objectMetadataItems: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'nameSingular' | 'labelSingular' >[]; navigationMenuItemObjectNameSingular: string; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemComputedLink.ts index 7d532e1b37..b95af94ce8 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemComputedLink.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemComputedLink.ts @@ -1,5 +1,5 @@ import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; @@ -8,7 +8,7 @@ export const getRecordNavigationMenuItemComputedLink = ( NavigationMenuItem, 'targetObjectMetadataId' | 'targetRecordIdentifier' >, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ): string => { const objectMetadataItem = objectMetadataItems.find( (meta) => meta.id === item.targetObjectMetadataId, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/NavigationMenuItemSectionContentProps.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/NavigationMenuItemSectionContentProps.ts index 3f045d6d82..f7393a1cd8 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/NavigationMenuItemSectionContentProps.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/NavigationMenuItemSectionContentProps.ts @@ -1,7 +1,7 @@ import type { ReactNode } from 'react'; import type { NavigationMenuItemClickParams } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemSectionItems'; -import type { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import type { EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; import type { EditModeProps } from '@/object-metadata/components/EditModeProps'; @@ -17,7 +17,7 @@ export type NavigationMenuItemSectionContentProps = { selectedNavigationMenuItemId?: string | null; onNavigationMenuItemClick?: (params: NavigationMenuItemClickParams) => void; onActiveObjectMetadataItemClick?: ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, navigationMenuItemId: string, ) => void; readOnly?: boolean; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/NavigationMenuItemSectionListDndKitProps.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/NavigationMenuItemSectionListDndKitProps.ts index 40413c6374..a5806a6f2f 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/NavigationMenuItemSectionListDndKitProps.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/NavigationMenuItemSectionListDndKitProps.ts @@ -1,5 +1,5 @@ import type { NavigationMenuItemClickParams } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemSectionItems'; -import type { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import type { EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; import type { EditModeProps } from '@/object-metadata/components/EditModeProps'; @@ -11,7 +11,7 @@ export type NavigationMenuItemSectionListDndKitProps = { selectedNavigationMenuItemId: string | null; onNavigationMenuItemClick?: (params: NavigationMenuItemClickParams) => void; onActiveObjectMetadataItemClick?: ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, navigationMenuItemId: string, ) => void; }; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSection.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSection.tsx index c0dea72b36..94248353cf 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSection.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSection.tsx @@ -29,7 +29,7 @@ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils import { preloadNavigationMenuItemDndKit } from '@/navigation-menu-item/display/dnd/preloadNavigationMenuItemDndKit'; import { WorkspaceSectionContainer } from '@/navigation-menu-item/display/sections/workspace/components/WorkspaceSectionContainer'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useNavigateSidePanel } from '@/side-panel/hooks/useNavigateSidePanel'; import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -106,7 +106,7 @@ export const WorkspaceSection = () => { const openViewOrRecordEditPanelAndNavigate = ( item: NavigationMenuItemClickParams['item'], - objectMetadataItem: ObjectMetadataItem | null | undefined, + objectMetadataItem: EnrichedObjectMetadataItem | null | undefined, ) => { if (objectMetadataItem) { const label = @@ -151,7 +151,7 @@ export const WorkspaceSection = () => { }; const handleActiveObjectMetadataItemClick = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, navigationMenuItemId: string, ) => { enterLayoutCustomizationMode(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSectionContainer.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSectionContainer.tsx index 2fb2bae7b6..ea28208ef9 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSectionContainer.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceSectionContainer.tsx @@ -15,7 +15,7 @@ import { NavigationMenuItemSection } from '@/navigation-menu-item/display/sectio import type { EditModeProps } from '@/object-metadata/components/EditModeProps'; import { WorkspaceSectionListEditModeFallback } from '@/object-metadata/components/WorkspaceSectionListEditModeFallback'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { useNavigationSection } from '@/ui/navigation/navigation-drawer/hooks/useNavigationSection'; @@ -39,7 +39,7 @@ type WorkspaceSectionContainerProps = { selectedNavigationMenuItemId?: string | null; onNavigationMenuItemClick?: (params: NavigationMenuItemClickParams) => void; onActiveObjectMetadataItemClick?: ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, navigationMenuItemId: string, ) => void; }; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts index f2906812a7..7a9e5d9048 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier'; import { type View } from '@/views/types/View'; import { ViewKey } from '@/views/types/ViewKey'; @@ -8,7 +8,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const getNavigationMenuItemComputedLink = ( item: NavigationMenuItem, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], views: Pick[], ): string => { switch (item.type) { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemLabel.ts index cb9999a0ac..65bfdfe546 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemLabel.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemLabel.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { ViewKey } from '@/views/types/ViewKey'; import { NavigationMenuItemType } from 'twenty-shared/types'; @@ -8,7 +8,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const getNavigationMenuItemLabel = ( item: NavigationMenuItem, objectMetadataItems: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'id' | 'labelPlural' | 'nameSingular' >[], views: Pick[], diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemComputedLink.ts index cf15ac5469..324670b4c5 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemComputedLink.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemComputedLink.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { AppPath } from 'twenty-shared/types'; import { getAppPath, isDefined } from 'twenty-shared/utils'; @@ -6,7 +6,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const getViewNavigationMenuItemComputedLink = ( item: Pick, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], views: Pick[], ): string => { const view = views.find((view) => view.id === item.viewId); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemLabel.ts index dcf46139f9..709887166d 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemLabel.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemLabel.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; import { ViewKey } from '@/views/types/ViewKey'; import { isDefined } from 'twenty-shared/utils'; @@ -7,7 +7,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; export const getViewNavigationMenuItemLabel = ( item: Pick, views: Pick[], - objectMetadataItems: Pick[], + objectMetadataItems: Pick[], ): string => { const view = views.find((view) => view.id === item.viewId); if (!isDefined(view)) { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSubPage.tsx index e369147589..c63bff3998 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSubPage.tsx @@ -8,7 +8,7 @@ import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/ import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; import { SidePanelObjectPickerSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView'; import { getAvailableObjectMetadataForNewSidebarItem } from '@/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem'; @@ -56,7 +56,9 @@ export const SidePanelNewSidebarItemObjectSubPage = () => { objectMetadataIdsWithDisplayableViews, }); - const handleSelectObject = (objectMetadataItem: ObjectMetadataItem) => { + const handleSelectObject = ( + objectMetadataItem: EnrichedObjectMetadataItem, + ) => { if (objectMetadataIdsInWorkspace.has(objectMetadataItem.id)) { return; } diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx index bc78ed6cea..0994917edd 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx @@ -8,7 +8,7 @@ import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/ import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SidePanelSystemObjectPickerSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView'; import { getAvailableObjectMetadataForNewSidebarItem } from '@/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -55,7 +55,9 @@ export const SidePanelNewSidebarItemObjectSystemPickerSubPage = () => { objectMetadataIdsWithDisplayableViews, }); - const handleSelectObject = (objectMetadataItem: ObjectMetadataItem) => { + const handleSelectObject = ( + objectMetadataItem: EnrichedObjectMetadataItem, + ) => { if (objectMetadataIdsInWorkspace.has(objectMetadataItem.id)) { return; } diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx index 9925baa53e..aa65cfd650 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx @@ -2,7 +2,7 @@ import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/u import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; import { SidePanelNewSidebarItemViewObjectPickerSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView'; import { getAvailableObjectMetadataForNewSidebarItem } from '@/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem'; @@ -46,7 +46,9 @@ export const SidePanelNewSidebarItemViewObjectPickerSubPage = () => { objectMetadataIdsWithDisplayableViews, }); - const handleSelectObject = (objectMetadataItem: ObjectMetadataItem) => { + const handleSelectObject = ( + objectMetadataItem: EnrichedObjectMetadataItem, + ) => { setSelectedObjectMetadataIdForViewFlow(objectMetadataItem.id); navigateToSidePanelSubPage( SidePanelSubPages.NewSidebarItemViewPicker, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx index 47d2730982..0f169ead97 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx @@ -4,7 +4,7 @@ import { IconSettings, useIcons } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { SidePanelSubViewWithSearch } from '@/side-panel/components/SidePanelSubViewWithSearch'; @@ -12,11 +12,11 @@ import { useSidePanelFilteredPickerItems } from '@/side-panel/hooks/useSidePanel import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; type SidePanelNewSidebarItemViewObjectPickerSubViewProps = { - objects: ObjectMetadataItem[]; + objects: EnrichedObjectMetadataItem[]; searchValue: string; onSearchChange: (value: string) => void; onOpenSystemPicker: () => void; - onSelectObject: (objectMetadataItem: ObjectMetadataItem) => void; + onSelectObject: (objectMetadataItem: EnrichedObjectMetadataItem) => void; showSystemObjectsOption?: boolean; }; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx index ef2c9bdbdc..43044c38a8 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx @@ -2,7 +2,7 @@ import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/u import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; import { SidePanelNewSidebarItemViewSystemSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView'; import { getAvailableObjectMetadataForNewSidebarItem } from '@/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem'; @@ -44,7 +44,9 @@ export const SidePanelNewSidebarItemViewSystemPickerSubPage = () => { objectMetadataIdsWithDisplayableViews, }); - const handleSelectObject = (objectMetadataItem: ObjectMetadataItem) => { + const handleSelectObject = ( + objectMetadataItem: EnrichedObjectMetadataItem, + ) => { setSelectedObjectMetadataIdForViewFlow(objectMetadataItem.id); navigateToSidePanelSubPage( SidePanelSubPages.NewSidebarItemViewPicker, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView.tsx index 083858f065..d9820720d0 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView.tsx @@ -4,7 +4,7 @@ import { useIcons } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { SidePanelSubViewWithSearch } from '@/side-panel/components/SidePanelSubViewWithSearch'; @@ -12,10 +12,10 @@ import { useSidePanelFilteredPickerItems } from '@/side-panel/hooks/useSidePanel import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; type SidePanelNewSidebarItemViewSystemSubViewProps = { - systemObjects: ObjectMetadataItem[]; + systemObjects: EnrichedObjectMetadataItem[]; searchValue: string; onSearchChange: (value: string) => void; - onSelectObject: (objectMetadataItem: ObjectMetadataItem) => void; + onSelectObject: (objectMetadataItem: EnrichedObjectMetadataItem) => void; }; export const SidePanelNewSidebarItemViewSystemSubView = ({ diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem.tsx index 1a8b2d5cf1..ad70a90e71 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem.tsx @@ -8,15 +8,15 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SidePanelItemWithAddToNavigationDrag } from '@/side-panel/components/SidePanelItemWithAddToNavigationDrag'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; import { useAtomFamilySelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilySelectorValue'; import { indexViewIdFromObjectMetadataItemFamilySelector } from '@/views/states/selectors/indexViewIdFromObjectMetadataItemFamilySelector'; type SidePanelObjectMenuItemProps = { - objectMetadataItem: ObjectMetadataItem; - onSelect: (objectMetadataItem: ObjectMetadataItem) => void; + objectMetadataItem: EnrichedObjectMetadataItem; + onSelect: (objectMetadataItem: EnrichedObjectMetadataItem) => void; variant: 'add' | 'edit'; dragIndex?: number; disableDrag?: boolean; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem.tsx index 36a33eea84..9e78acd180 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem.tsx @@ -4,15 +4,17 @@ import { useIcons } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SidePanelObjectMenuItem } from '@/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; type SidePanelObjectPickerItemProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; isViewItem: boolean; - onSelectObjectForViewEdit?: (objectMetadataItem: ObjectMetadataItem) => void; - onChangeObject: (objectMetadataItem: ObjectMetadataItem) => void; + onSelectObjectForViewEdit?: ( + objectMetadataItem: EnrichedObjectMetadataItem, + ) => void; + onChangeObject: (objectMetadataItem: EnrichedObjectMetadataItem) => void; objectMenuItemVariant?: 'add' | 'edit'; dragIndex?: number; disableDrag?: boolean; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx index 4743c151bb..322d693095 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx @@ -3,7 +3,7 @@ import { IconSettings } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SidePanelAddToNavigationDroppable } from '@/side-panel/components/SidePanelAddToNavigationDroppable'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; @@ -13,13 +13,15 @@ import { SidePanelObjectPickerItem } from '@/navigation-menu-item/edit/side-pane import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; type SidePanelObjectPickerSubViewProps = { - objects: ObjectMetadataItem[]; + objects: EnrichedObjectMetadataItem[]; searchValue: string; onSearchChange: (value: string) => void; onOpenSystemPicker: () => void; isViewItem: boolean; - onSelectObjectForViewEdit?: (objectMetadataItem: ObjectMetadataItem) => void; - onChangeObject: (objectMetadataItem: ObjectMetadataItem) => void; + onSelectObjectForViewEdit?: ( + objectMetadataItem: EnrichedObjectMetadataItem, + ) => void; + onChangeObject: (objectMetadataItem: EnrichedObjectMetadataItem) => void; objectMenuItemVariant?: 'add' | 'edit'; emptyNoResultsText?: string; disableDrag?: boolean; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView.tsx index 35bac34893..2e2bd2ea7a 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView.tsx @@ -1,6 +1,6 @@ import { useLingui } from '@lingui/react/macro'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SidePanelAddToNavigationDroppable } from '@/side-panel/components/SidePanelAddToNavigationDroppable'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; @@ -9,12 +9,14 @@ import { useSidePanelFilteredPickerItems } from '@/side-panel/hooks/useSidePanel import { SidePanelObjectPickerItem } from '@/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem'; type SidePanelSystemObjectPickerSubViewProps = { - systemObjects: ObjectMetadataItem[]; + systemObjects: EnrichedObjectMetadataItem[]; searchValue: string; onSearchChange: (value: string) => void; isViewItem: boolean; - onSelectObjectForViewEdit?: (objectMetadataItem: ObjectMetadataItem) => void; - onChangeObject: (objectMetadataItem: ObjectMetadataItem) => void; + onSelectObjectForViewEdit?: ( + objectMetadataItem: EnrichedObjectMetadataItem, + ) => void; + onChangeObject: (objectMetadataItem: EnrichedObjectMetadataItem) => void; objectMenuItemVariant?: 'add' | 'edit'; emptyNoResultsText?: string; disableDrag?: boolean; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem.ts index 8121e0d317..d805303911 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem.ts @@ -1,17 +1,17 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; type GetAvailableObjectMetadataForNewSidebarItemProps = { - objectMetadataItems: ObjectMetadataItem[]; - activeNonSystemObjectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; + activeNonSystemObjectMetadataItems: EnrichedObjectMetadataItem[]; objectMetadataIdsWithIndexView: Set; objectMetadataIdsWithDisplayableViews: Set; }; type GetAvailableObjectMetadataForNewSidebarItemResult = { - availableObjectMetadataItems: ObjectMetadataItem[]; - availableSystemObjectMetadataItems: ObjectMetadataItem[]; - objectMetadataItemsWithViews: ObjectMetadataItem[]; - availableSystemObjectMetadataItemsForView: ObjectMetadataItem[]; + availableObjectMetadataItems: EnrichedObjectMetadataItem[]; + availableSystemObjectMetadataItems: EnrichedObjectMetadataItem[]; + objectMetadataItemsWithViews: EnrichedObjectMetadataItem[]; + availableSystemObjectMetadataItemsForView: EnrichedObjectMetadataItem[]; }; export const getAvailableObjectMetadataForNewSidebarItem = ({ diff --git a/packages/twenty-front/src/modules/navigation/hooks/__tests__/useDefaultHomePagePath.test.ts b/packages/twenty-front/src/modules/navigation/hooks/__tests__/useDefaultHomePagePath.test.ts index 45ff334d57..0a41f9d3cb 100644 --- a/packages/twenty-front/src/modules/navigation/hooks/__tests__/useDefaultHomePagePath.test.ts +++ b/packages/twenty-front/src/modules/navigation/hooks/__tests__/useDefaultHomePagePath.test.ts @@ -14,7 +14,7 @@ import { ViewVisibility, } from '~/generated-metadata/graphql'; import { mockedUserData } from '~/testing/mock-data/users'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; import { setTestViewsInMetadataStore } from '~/testing/utils/setTestViewsInMetadataStore'; import { setTestObjectMetadataItemsInMetadataStore } from '~/testing/utils/setTestObjectMetadataItemsInMetadataStore'; @@ -31,7 +31,7 @@ const renderHooks = ({ }) => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); const { result } = renderHook( diff --git a/packages/twenty-front/src/modules/navigation/types/ObjectPathInfo.ts b/packages/twenty-front/src/modules/navigation/types/ObjectPathInfo.ts index c2a7d5dc44..33fed86af7 100644 --- a/packages/twenty-front/src/modules/navigation/types/ObjectPathInfo.ts +++ b/packages/twenty-front/src/modules/navigation/types/ObjectPathInfo.ts @@ -1,7 +1,7 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type View } from '@/views/types/View'; export type ObjectPathInfo = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; view: View | undefined; }; diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx index cea97ecbeb..aa717df000 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx @@ -1,6 +1,6 @@ import { NavigationDrawerItemForObjectMetadataItem } from '@/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { NavigationDrawerAnimatedCollapseWrapper } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper'; @@ -26,12 +26,14 @@ const ORDERED_LAST_STANDARD_OBJECTS: string[] = [ type NavigationDrawerSectionForObjectMetadataItemsProps = { sectionTitle: string; isRemote: boolean; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; rightIcon?: React.ReactNode; selectedObjectMetadataItemId?: string | null; - onObjectMetadataItemClick?: (objectMetadataItem: ObjectMetadataItem) => void; + onObjectMetadataItemClick?: ( + objectMetadataItem: EnrichedObjectMetadataItem, + ) => void; onActiveObjectMetadataItemClick?: ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => void; }; diff --git a/packages/twenty-front/src/modules/object-metadata/errors/ObjectMetadataNotFoundError.ts b/packages/twenty-front/src/modules/object-metadata/errors/ObjectMetadataNotFoundError.ts index fdafb15e09..41a2f2f3cf 100644 --- a/packages/twenty-front/src/modules/object-metadata/errors/ObjectMetadataNotFoundError.ts +++ b/packages/twenty-front/src/modules/object-metadata/errors/ObjectMetadataNotFoundError.ts @@ -1,7 +1,10 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export class ObjectMetadataItemNotFoundError extends Error { - constructor(objectName: string, objectMetadataItems: ObjectMetadataItem[]) { + constructor( + objectName: string, + objectMetadataItems: EnrichedObjectMetadataItem[], + ) { const message = `Object metadata item "${objectName}" cannot be found in an array of ${ objectMetadataItems?.length ?? 0 } elements`; diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useColumnDefinitionsFromObjectMetadata.test.ts b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useColumnDefinitionsFromObjectMetadata.test.ts index 9b7cde3a7e..e77994d0ef 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useColumnDefinitionsFromObjectMetadata.test.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useColumnDefinitionsFromObjectMetadata.test.ts @@ -5,7 +5,7 @@ import { DEFAULT_SMART_MODEL } from '@/ai/constants/DefaultSmartModel'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState'; import { CUSTOM_WORKSPACE_APPLICATION_MOCK } from '@/object-metadata/hooks/__tests__/constants/CustomWorkspaceApplicationMock.test.constant'; import { useColumnDefinitionsFromObjectMetadata } from '@/object-metadata/hooks/useColumnDefinitionsFromObjectMetadata'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; import { SubscriptionInterval, @@ -13,7 +13,7 @@ import { WorkspaceActivationStatus, } from '~/generated-metadata/graphql'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const Wrapper = getJestMetadataAndApolloMocksAndCommandMenuWrapper({ apolloMocks: [], @@ -74,12 +74,12 @@ describe('useColumnDefinitionsFromObjectMetadata', () => { useRecommendedModels: true, }); - const companyObjectMetadata = generatedMockObjectMetadataItems.find( + const companyObjectMetadata = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'company', ); const { result } = renderHook( - (objectMetadataItem: ObjectMetadataItem) => { + (objectMetadataItem: EnrichedObjectMetadataItem) => { return useColumnDefinitionsFromObjectMetadata(objectMetadataItem); }, { diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useFilteredObjectMetadataItems.test.tsx b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useFilteredObjectMetadataItems.test.tsx index 0b2496e08d..1a9d8e4acf 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useFilteredObjectMetadataItems.test.tsx +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useFilteredObjectMetadataItems.test.tsx @@ -11,7 +11,7 @@ import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilte import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; import { setTestObjectMetadataItemsInMetadataStore } from '~/testing/utils/setTestObjectMetadataItemsInMetadataStore'; import { isDefined } from 'twenty-shared/utils'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const mocks = [ { @@ -30,7 +30,7 @@ const mocks = [ const Wrapper = ({ children }: { children: ReactNode }) => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); return ( @@ -67,7 +67,7 @@ describe('useFilteredObjectMetadataItems', () => { }); it('should findObjectMetadataItemById', async () => { - const peopleObjectMetadata = generatedMockObjectMetadataItems.find( + const peopleObjectMetadata = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.namePlural === 'people', ); diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useGetObjectRecordIdentifierByNameSingular.test.tsx b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useGetObjectRecordIdentifierByNameSingular.test.tsx index 4b32403c80..41f413d16e 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useGetObjectRecordIdentifierByNameSingular.test.tsx +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useGetObjectRecordIdentifierByNameSingular.test.tsx @@ -4,7 +4,7 @@ import { Provider as JotaiProvider } from 'jotai'; import { useGetObjectRecordIdentifierByNameSingular } from '@/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; import { setTestObjectMetadataItemsInMetadataStore } from '~/testing/utils/setTestObjectMetadataItemsInMetadataStore'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const Wrapper = ({ children }: { children: React.ReactNode }) => ( {children} @@ -14,7 +14,7 @@ describe('useGetObjectRecordIdentifierByNameSingular', () => { beforeEach(() => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); }); diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useGetRelationMetadata.test.tsx b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useGetRelationMetadata.test.tsx index 614ad0c387..afe6dd38da 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useGetRelationMetadata.test.tsx +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useGetRelationMetadata.test.tsx @@ -6,7 +6,7 @@ import { Provider as JotaiProvider } from 'jotai'; import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMetadata'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; import { setTestObjectMetadataItemsInMetadataStore } from '~/testing/utils/setTestObjectMetadataItemsInMetadataStore'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const Wrapper = ({ children }: { children: ReactNode }) => ( @@ -18,12 +18,12 @@ describe('useGetRelationMetadata', () => { beforeEach(() => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); }); it('should return correct properties', async () => { - const objectMetadata = generatedMockObjectMetadataItems.find( + const objectMetadata = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', )!; const fieldMetadataItem = objectMetadata.fields.find( @@ -42,7 +42,7 @@ describe('useGetRelationMetadata', () => { } = result.current({ fieldMetadataItem }) ?? {}; const expectedRelationObjectMetadataItem = - generatedMockObjectMetadataItems.find( + getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'opportunity', ); const expectedRelationFieldMetadataItem = diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useObjectMetadataItem.test.tsx b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useObjectMetadataItem.test.tsx index 23faacd6b2..4900f90501 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useObjectMetadataItem.test.tsx +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useObjectMetadataItem.test.tsx @@ -3,7 +3,7 @@ import { renderHook } from '@testing-library/react'; import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/ObjectMetadataNotFoundError'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const Wrapper = getJestMetadataAndApolloMocksWrapper({ apolloMocks: [], @@ -11,9 +11,10 @@ const Wrapper = getJestMetadataAndApolloMocksWrapper({ // Split into tests for each new hook describe('useObjectMetadataItem', () => { - const opportunityObjectMetadata = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'opportunity', - ); + const opportunityObjectMetadata = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'opportunity', + ); it('should return correct properties', async () => { const { result } = renderHook( () => useObjectMetadataItem({ objectNameSingular: 'opportunity' }), diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useObjectMetadataItemById.test.ts b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useObjectMetadataItemById.test.ts index 8a8cb93f13..8db500d7f3 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useObjectMetadataItemById.test.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useObjectMetadataItemById.test.ts @@ -2,16 +2,17 @@ import { renderHook } from '@testing-library/react'; import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const Wrapper = getJestMetadataAndApolloMocksWrapper({ apolloMocks: [], }); describe('useObjectMetadataItemById', () => { - const opportunityObjectMetadata = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'opportunity', - ); + const opportunityObjectMetadata = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'opportunity', + ); if (!opportunityObjectMetadata) { throw new Error('Opportunity object metadata not found'); diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useActiveFieldMetadataItems.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useActiveFieldMetadataItems.ts index 0e23091161..d1a5ec7dae 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useActiveFieldMetadataItems.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useActiveFieldMetadataItems.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; import { isActiveFieldMetadataItem } from '@/object-metadata/utils/isActiveFieldMetadataItem'; import { useMemo } from 'react'; @@ -6,7 +6,7 @@ import { useMemo } from 'react'; export const useActiveFieldMetadataItems = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const activeFieldMetadataItems = useMemo( () => diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useColumnDefinitionsFromObjectMetadata.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useColumnDefinitionsFromObjectMetadata.ts index c759c5d9bc..b90ff15ac3 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useColumnDefinitionsFromObjectMetadata.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useColumnDefinitionsFromObjectMetadata.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { type FieldMetadata } from '@/object-record/record-field/ui/types/FieldMetadata'; import { type ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition'; @@ -11,7 +11,7 @@ import { useAtomFamilySelectorValue } from '@/ui/utilities/state/jotai/hooks/use import { useMemo } from 'react'; export const useColumnDefinitionsFromObjectMetadata = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { const filterableFieldMetadataItems = useAtomFamilySelectorValue( availableFieldMetadataItemsForFilterFamilySelector, diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useGetFieldMetadataItemById.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useGetFieldMetadataItemById.ts index 472ef8c105..98ee328cb3 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useGetFieldMetadataItemById.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useGetFieldMetadataItemById.ts @@ -2,13 +2,13 @@ import { useCallback } from 'react'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getFieldMetadataItemByIdOrThrow } from '@/object-metadata/utils/getFieldMetadataItemByIdOrThrow'; import { useStore } from 'jotai'; type GetFieldMetadataItemByIdOrThrowResult = { fieldMetadataItem: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const useGetFieldMetadataItemByIdOrThrow = () => { diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular.ts index c015b9d422..3d7263977b 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular.ts @@ -15,7 +15,7 @@ export const useGetObjectRecordIdentifierByNameSingular = ( if (!objectMetadataItem) { throw new Error( - `ObjectMetadataItem not found for objectNameSingular: ${objectNameSingular}`, + `Object metadata not found for objectNameSingular: ${objectNameSingular}`, ); } diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useLoadMockedObjectMetadataItems.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useLoadMockedObjectMetadataItems.ts deleted file mode 100644 index 9fe370a6d7..0000000000 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useLoadMockedObjectMetadataItems.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { useMetadataStore } from '@/metadata-store/hooks/useMetadataStore'; -import { splitObjectMetadataItemWithRelated } from '@/metadata-store/utils/splitObjectMetadataItemWithRelated'; -import { useCallback } from 'react'; - -export const useLoadMockedObjectMetadataItems = () => { - const { replaceDraft, applyChanges } = useMetadataStore(); - - const loadMockedObjectMetadataItems = useCallback(async () => { - const { generatedMockObjectMetadataItems } = await import( - '~/testing/utils/generatedMockObjectMetadataItems' - ); - - const { flatObjects, flatFields, flatIndexes } = - splitObjectMetadataItemWithRelated(generatedMockObjectMetadataItems); - - replaceDraft('objectMetadataItems', flatObjects); - replaceDraft('fieldMetadataItems', flatFields); - replaceDraft('indexMetadataItems', flatIndexes); - applyChanges(); - }, [replaceDraft, applyChanges]); - - return { - loadMockedObjectMetadataItems, - }; -}; diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useObjectLabel.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useObjectLabel.ts index d23306868e..c51a1ce653 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useObjectLabel.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useObjectLabel.ts @@ -1,5 +1,7 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; -export const useObjectLabel = (objectMetadataItem: ObjectMetadataItem) => { +export const useObjectLabel = ( + objectMetadataItem: EnrichedObjectMetadataItem, +) => { return objectMetadataItem?.labelSingular ?? ''; }; diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useOrderByFieldPerMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useOrderByFieldPerMetadataItem.ts index 540847e009..11ab74a152 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useOrderByFieldPerMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useOrderByFieldPerMetadataItem.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getOrderByFieldForObjectMetadataItem } from '@/object-metadata/utils/getObjectOrderByField'; import { capitalize, isDefined } from 'twenty-shared/utils'; export const useOrderByFieldPerMetadataItem = ({ objectMetadataItems, }: { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; }) => { const orderByFieldPerMetadataItem = Object.fromEntries( objectMetadataItems diff --git a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemFamilySelector.ts b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemFamilySelector.ts index 91497ce747..bff15a9ef1 100644 --- a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemFamilySelector.ts +++ b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemFamilySelector.ts @@ -1,5 +1,5 @@ import { objectMetadataItemsWithFieldsSelector } from '@/object-metadata/states/objectMetadataItemsWithFieldsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { createAtomFamilySelector } from '@/ui/utilities/state/jotai/utils/createAtomFamilySelector'; type ObjectMetadataItemSelector = { @@ -8,7 +8,7 @@ type ObjectMetadataItemSelector = { }; export const objectMetadataItemFamilySelector = createAtomFamilySelector< - ObjectMetadataItem | null, + EnrichedObjectMetadataItem | null, ObjectMetadataItemSelector >({ key: 'objectMetadataItemFamilySelector', diff --git a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsByNamePluralMapSelector.ts b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsByNamePluralMapSelector.ts index 46b9f3bb2d..2f5e3d4020 100644 --- a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsByNamePluralMapSelector.ts +++ b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsByNamePluralMapSelector.ts @@ -1,9 +1,9 @@ import { objectMetadataItemsWithFieldsSelector } from '@/object-metadata/states/objectMetadataItemsWithFieldsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { createAtomSelector } from '@/ui/utilities/state/jotai/utils/createAtomSelector'; export const objectMetadataItemsByNamePluralMapSelector = createAtomSelector< - Map + Map >({ key: 'objectMetadataItemsByNamePluralMapSelector', get: ({ get }) => { diff --git a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsByNameSingularMapSelector.ts b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsByNameSingularMapSelector.ts index 2b07413146..a7720e0409 100644 --- a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsByNameSingularMapSelector.ts +++ b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsByNameSingularMapSelector.ts @@ -1,9 +1,9 @@ import { objectMetadataItemsWithFieldsSelector } from '@/object-metadata/states/objectMetadataItemsWithFieldsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { createAtomSelector } from '@/ui/utilities/state/jotai/utils/createAtomSelector'; export const objectMetadataItemsByNameSingularMapSelector = createAtomSelector< - Map + Map >({ key: 'objectMetadataItemsByNameSingularMapSelector', get: ({ get }) => { diff --git a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsBySingularNameSelector.ts b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsBySingularNameSelector.ts index 4fdc872729..47fd19c447 100644 --- a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsBySingularNameSelector.ts +++ b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsBySingularNameSelector.ts @@ -1,9 +1,9 @@ import { objectMetadataItemsWithFieldsSelector } from '@/object-metadata/states/objectMetadataItemsWithFieldsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { createAtomFamilySelector } from '@/ui/utilities/state/jotai/utils/createAtomFamilySelector'; export const objectMetadataItemsBySingularNameSelector = - createAtomFamilySelector({ + createAtomFamilySelector({ key: 'objectMetadataItemsSelector', get: (objectNameSingulars: string[]) => diff --git a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsSelector.ts b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsSelector.ts index 3bd95f3d5d..8150763b17 100644 --- a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsSelector.ts +++ b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsSelector.ts @@ -1,9 +1,9 @@ import { objectMetadataItemsWithFieldsSelector } from '@/object-metadata/states/objectMetadataItemsWithFieldsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { createAtomSelector } from '@/ui/utilities/state/jotai/utils/createAtomSelector'; export const objectMetadataItemsSelector = createAtomSelector< - ObjectMetadataItem[] + EnrichedObjectMetadataItem[] >({ key: 'objectMetadataItemsSelector', get: ({ get }) => get(objectMetadataItemsWithFieldsSelector), diff --git a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsWithFieldsSelector.ts b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsWithFieldsSelector.ts index 1c70886dea..a03f2ca3db 100644 --- a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsWithFieldsSelector.ts +++ b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsWithFieldsSelector.ts @@ -2,7 +2,7 @@ import { currentUserWorkspaceState } from '@/auth/states/currentUserWorkspaceSta import { fieldMetadataItemsSelector } from '@/metadata-store/states/fieldMetadataItemsSelector'; import { indexMetadataItemsSelector } from '@/metadata-store/states/indexMetadataItemsSelector'; import { flatObjectMetadataItemsSelector } from '@/object-metadata/states/flatObjectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getNonReadableFieldMetadataIdsFromObjectPermissions } from '@/object-metadata/utils/getNonReadableFieldMetadataIdsFromObjectPermissions'; import { getNonUpdatableFieldMetadataIdsFromObjectPermissions } from '@/object-metadata/utils/getNonUpdatableFieldMetadataIdsFromObjectPermissions'; import { getObjectPermissionsFromMapByObjectMetadataId } from '@/settings/roles/role-permissions/objects-permissions/utils/getObjectPermissionsFromMapByObjectMetadataId'; @@ -11,7 +11,7 @@ import { type ObjectPermissions } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; export const objectMetadataItemsWithFieldsSelector = createAtomSelector< - ObjectMetadataItem[] + EnrichedObjectMetadataItem[] >({ key: 'objectMetadataItemsWithFieldsSelector', get: ({ get }) => { @@ -89,7 +89,7 @@ export const objectMetadataItemsWithFieldsSelector = createAtomSelector< updatableFields: fields.filter( (field) => !nonUpdatableFieldMetadataIds.includes(field.id), ), - } satisfies ObjectMetadataItem; + } satisfies EnrichedObjectMetadataItem; }); }, }); diff --git a/packages/twenty-front/src/modules/object-metadata/types/ObjectMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/types/EnrichedObjectMetadataItem.ts similarity index 93% rename from packages/twenty-front/src/modules/object-metadata/types/ObjectMetadataItem.ts rename to packages/twenty-front/src/modules/object-metadata/types/EnrichedObjectMetadataItem.ts index f7885734c1..2d4d2e6c3f 100644 --- a/packages/twenty-front/src/modules/object-metadata/types/ObjectMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/types/EnrichedObjectMetadataItem.ts @@ -3,7 +3,7 @@ import { type Object as GeneratedObject } from '~/generated-metadata/graphql'; import { type IndexMetadataItem } from '@/object-metadata/types/IndexMetadataItem'; import { type FieldMetadataItem } from './FieldMetadataItem'; -export type ObjectMetadataItem = Omit< +export type EnrichedObjectMetadataItem = Omit< GeneratedObject, | '__typename' | 'applicationId' diff --git a/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItemRelation.ts b/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItemRelation.ts index 99d7d3aab1..6ed30f30d7 100644 --- a/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItemRelation.ts +++ b/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItemRelation.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type Field, type RelationType } from '~/generated-metadata/graphql'; @@ -7,11 +7,11 @@ export type FieldMetadataItemRelation = { sourceFieldMetadata: Pick; targetFieldMetadata: Pick; sourceObjectMetadata: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'id' | 'nameSingular' | 'namePlural' >; targetObjectMetadata: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'id' | 'nameSingular' | 'namePlural' >; }; diff --git a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/getObjectOrderByField.test.ts b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/getObjectOrderByField.test.ts index 486a6a4a69..53ff6c2e44 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/getObjectOrderByField.test.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/getObjectOrderByField.test.ts @@ -1,9 +1,9 @@ import { getOrderByFieldForObjectMetadataItem } from '@/object-metadata/utils/getObjectOrderByField'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; describe('getObjectOrderByField', () => { it('should work as expected', () => { - const objectMetadataItem = generatedMockObjectMetadataItems.find( + const objectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', )!; const res = getOrderByFieldForObjectMetadataItem(objectMetadataItem); diff --git a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/getOrderByForRelationField.test.ts b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/getOrderByForRelationField.test.ts index 590ef95934..a1d04f45cb 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/getOrderByForRelationField.test.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/getOrderByForRelationField.test.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getOrderByForRelationField } from '@/object-metadata/utils/getOrderByForFieldMetadataType'; import { FieldMetadataType } from '~/generated-metadata/graphql'; @@ -10,7 +10,7 @@ describe('getOrderByForRelationField', () => { }; const relatedObjectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'labelIdentifierFieldMetadataId' > = { labelIdentifierFieldMetadataId: 'name-field-id', @@ -39,7 +39,7 @@ describe('getOrderByForRelationField', () => { }; const relatedObjectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'labelIdentifierFieldMetadataId' > = { labelIdentifierFieldMetadataId: 'name-field-id', @@ -77,7 +77,7 @@ describe('getOrderByForRelationField', () => { }; const relatedObjectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'labelIdentifierFieldMetadataId' > = { labelIdentifierFieldMetadataId: 'non-existent-field-id', @@ -99,7 +99,7 @@ describe('getOrderByForRelationField', () => { }; const relatedObjectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'labelIdentifierFieldMetadataId' > = { labelIdentifierFieldMetadataId: undefined as unknown as string, @@ -129,7 +129,7 @@ describe('getOrderByForRelationField', () => { }; const relatedObjectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'labelIdentifierFieldMetadataId' > = { labelIdentifierFieldMetadataId: 'name-field-id', diff --git a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/isObjectMetadataAvailableForRelation.test.ts b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/isObjectMetadataAvailableForRelation.test.ts index 3e6453ef9e..a9ee52c786 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/isObjectMetadataAvailableForRelation.test.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/isObjectMetadataAvailableForRelation.test.ts @@ -1,9 +1,9 @@ import { isObjectMetadataAvailableForRelation } from '@/object-metadata/utils/isObjectMetadataAvailableForRelation'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; describe('isObjectMetadataAvailableForRelation', () => { it('should work as expected', () => { - const objectMetadataItem = generatedMockObjectMetadataItems.find( + const objectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', )!; diff --git a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/mapFieldMetadataToGraphQLQuery.test.ts b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/mapFieldMetadataToGraphQLQuery.test.ts index fc188df7a8..9bd9fec48c 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/mapFieldMetadataToGraphQLQuery.test.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/mapFieldMetadataToGraphQLQuery.test.ts @@ -1,19 +1,19 @@ import { mapFieldMetadataToGraphQLQuery } from '@/object-metadata/utils/mapFieldMetadataToGraphQLQuery'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { normalizeGQLField } from '~/utils/normalizeGQLField'; -const personObjectMetadataItem = generatedMockObjectMetadataItems.find( +const personObjectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', ); if (!personObjectMetadataItem) { - throw new Error('ObjectMetadataItem not found'); + throw new Error('Object metadata not found'); } describe('mapFieldMetadataToGraphQLQuery', () => { it('should return fieldName if simpleValue', async () => { const res = mapFieldMetadataToGraphQLQuery({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), gqlField: 'id', fieldMetadata: personObjectMetadataItem.fields.find( (field) => field.name === 'id', @@ -24,7 +24,7 @@ describe('mapFieldMetadataToGraphQLQuery', () => { }); it('should return fieldName if composite', async () => { const res = mapFieldMetadataToGraphQLQuery({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), gqlField: 'name', fieldMetadata: personObjectMetadataItem.fields.find( (field) => field.name === 'name', @@ -42,7 +42,7 @@ describe('mapFieldMetadataToGraphQLQuery', () => { it('should return non relation subFields if relation', async () => { const res = mapFieldMetadataToGraphQLQuery({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), gqlField: 'company', fieldMetadata: personObjectMetadataItem.fields.find( (field) => field.name === 'company', @@ -100,7 +100,7 @@ idealCustomerProfile it('should return only return relation subFields that are in recordGqlFields', async () => { const res = mapFieldMetadataToGraphQLQuery({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), relationRecordGqlFields: { accountOwner: { id: true, name: true }, people: true, diff --git a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/mapObjectMetadataToGraphQLQuery.test.ts b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/mapObjectMetadataToGraphQLQuery.test.ts index a7c4c039cb..f8514d0d5e 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/__tests__/mapObjectMetadataToGraphQLQuery.test.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/__tests__/mapObjectMetadataToGraphQLQuery.test.ts @@ -1,19 +1,19 @@ import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { normalizeGQLQuery } from '~/utils/normalizeGQLQuery'; -const personObjectMetadataItem = generatedMockObjectMetadataItems.find( +const personObjectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', ); if (!personObjectMetadataItem) { - throw new Error('ObjectMetadataItem not found'); + throw new Error('Object metadata not found'); } describe('mapObjectMetadataToGraphQLQuery', () => { it('should query only specified recordGqlFields', async () => { const res = mapObjectMetadataToGraphQLQuery({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordGqlFields: { company: true, @@ -133,7 +133,7 @@ describe('mapObjectMetadataToGraphQLQuery', () => { it('should load only specified operation fields nested', async () => { const res = mapObjectMetadataToGraphQLQuery({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordGqlFields: { company: { id: true }, id: true, name: true }, objectPermissionsByObjectMetadataId: { diff --git a/packages/twenty-front/src/modules/object-metadata/utils/enrichObjectMetadataItemsWithPermissions.ts b/packages/twenty-front/src/modules/object-metadata/utils/enrichObjectMetadataItemsWithPermissions.ts index 4e0e7bc752..8b231503ee 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/enrichObjectMetadataItemsWithPermissions.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/enrichObjectMetadataItemsWithPermissions.ts @@ -3,11 +3,11 @@ import { getNonUpdatableFieldMetadataIdsFromObjectPermissions } from '@/object-m import { getObjectPermissionsFromMapByObjectMetadataId } from '@/settings/roles/role-permissions/objects-permissions/utils/getObjectPermissionsFromMapByObjectMetadataId'; import { type ObjectPermissions } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; type enrichObjectMetadataItemsWithPermissionsArgs = { objectMetadataItems: Omit< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'readableFields' | 'updatableFields' >[]; objectPermissionsByObjectMetadataId: Record< @@ -20,7 +20,7 @@ export const enrichObjectMetadataItemsWithPermissions = ({ objectMetadataItems, objectPermissionsByObjectMetadataId, }: enrichObjectMetadataItemsWithPermissionsArgs) => { - const formattedObjects: ObjectMetadataItem[] = + const formattedObjects: EnrichedObjectMetadataItem[] = objectMetadataItems.map((object) => { const objectPermissions = getObjectPermissionsFromMapByObjectMetadataId({ objectPermissionsByObjectMetadataId, @@ -50,7 +50,7 @@ export const enrichObjectMetadataItemsWithPermissions = ({ updatableFields: fields.filter( (field) => !nonUpdatableFieldMetadataIds.includes(field.id), ), - } satisfies ObjectMetadataItem; + } satisfies EnrichedObjectMetadataItem; }) ?? []; return formattedObjects; diff --git a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition.ts b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition.ts index 7d1780af88..9573998465 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type FieldDefinition } from '@/object-record/record-field/ui/types/FieldDefinition'; import { type FieldMetadata } from '@/object-record/record-field/ui/types/FieldMetadata'; @@ -8,7 +8,7 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataIte export type FieldMetadataItemAsFieldDefinitionProps = { field: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; showLabel?: boolean; labelWidth?: number; }; diff --git a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemsAsFilterDefinitions.ts b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemsAsFilterDefinitions.ts index 8132de5045..5cb47f90c0 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemsAsFilterDefinitions.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemsAsFilterDefinitions.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export const getRelationObjectMetadataNameSingular = ({ field, }: { - field: ObjectMetadataItem['fields'][0]; + field: EnrichedObjectMetadataItem['fields'][0]; }): string | undefined => { return field.relation?.targetObjectMetadata.nameSingular; }; diff --git a/packages/twenty-front/src/modules/object-metadata/utils/generateCreateOneRecordMutation.ts b/packages/twenty-front/src/modules/object-metadata/utils/generateCreateOneRecordMutation.ts index d840422de9..35653d337b 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/generateCreateOneRecordMutation.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/generateCreateOneRecordMutation.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { generateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject'; import { getCreateOneRecordMutationResponseField } from '@/object-record/utils/getCreateOneRecordMutationResponseField'; @@ -15,8 +15,8 @@ export const generateCreateOneRecordMutation = ({ recordGqlFields, objectPermissionsByObjectMetadataId, }: { - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; recordGqlFields?: RecordGqlOperationGqlRecordFields; objectPermissionsByObjectMetadataId: Record< string, diff --git a/packages/twenty-front/src/modules/object-metadata/utils/generateUpdateManyRecordsMutation.ts b/packages/twenty-front/src/modules/object-metadata/utils/generateUpdateManyRecordsMutation.ts index 561b79a6c9..40804b800d 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/generateUpdateManyRecordsMutation.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/generateUpdateManyRecordsMutation.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getUpdateManyRecordsMutationResponseField } from '@/object-record/utils/getUpdateManyRecordsMutationResponseField'; import { gql } from '@apollo/client'; import { capitalize } from 'twenty-shared/utils'; @@ -6,7 +6,7 @@ import { capitalize } from 'twenty-shared/utils'; export const generateUpdateManyRecordsMutation = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const capitalizedObjectNameSingular = capitalize( objectMetadataItem.nameSingular, diff --git a/packages/twenty-front/src/modules/object-metadata/utils/generateUpdateOneRecordMutation.ts b/packages/twenty-front/src/modules/object-metadata/utils/generateUpdateOneRecordMutation.ts index da158decb3..1201a2b615 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/generateUpdateOneRecordMutation.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/generateUpdateOneRecordMutation.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { generateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject'; import { getUpdateOneRecordMutationResponseField } from '@/object-record/utils/getUpdateOneRecordMutationResponseField'; @@ -16,8 +16,8 @@ export const generateUpdateOneRecordMutation = ({ computeReferences, objectPermissionsByObjectMetadataId, }: { - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; recordGqlFields?: RecordGqlOperationGqlRecordFields; computeReferences: boolean; objectPermissionsByObjectMetadataId: Record< diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getActiveFieldMetadataItems.ts b/packages/twenty-front/src/modules/object-metadata/utils/getActiveFieldMetadataItems.ts index 49ca01ebc6..46a8e29b98 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getActiveFieldMetadataItems.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getActiveFieldMetadataItems.ts @@ -1,8 +1,8 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; export const getActiveFieldMetadataItems = ( - objectMetadataItem: Pick, + objectMetadataItem: Pick, ) => objectMetadataItem.readableFields.filter( (fieldMetadataItem) => diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getFieldMetadataItemById.ts b/packages/twenty-front/src/modules/object-metadata/utils/getFieldMetadataItemById.ts index 5a03e3d19e..35042e1fd5 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getFieldMetadataItemById.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getFieldMetadataItemById.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getFieldMetadataItemByIdOrThrow } from '@/object-metadata/utils/getFieldMetadataItemByIdOrThrow'; type GetFieldMetadataItemByIdParams = { fieldMetadataId: string; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; }; export const getFieldMetadataItemById = ({ diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getFieldMetadataItemByIdOrThrow.ts b/packages/twenty-front/src/modules/object-metadata/utils/getFieldMetadataItemByIdOrThrow.ts index ea546f060b..3870964eb7 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getFieldMetadataItemByIdOrThrow.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getFieldMetadataItemByIdOrThrow.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { CustomError, isDefined } from 'twenty-shared/utils'; type GetFieldMetadataItemByIdParams = { fieldMetadataId: string; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; }; const FIELD_METADATA_ITEM_NOT_FOUND_ERROR_CODE = diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getImageIdentifierFieldMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/utils/getImageIdentifierFieldMetadataItem.ts index 82a4c53093..44c4c52cdf 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getImageIdentifierFieldMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getImageIdentifierFieldMetadataItem.ts @@ -1,10 +1,10 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isImageIdentifierField } from '@/object-metadata/utils/isImageIdentifierField'; export const getImageIdentifierFieldMetadataItem = ( objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'imageIdentifierFieldMetadataId' | 'nameSingular' >, ): FieldMetadataItem | undefined => diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getLabelIdentifierFieldMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/utils/getLabelIdentifierFieldMetadataItem.ts index f7893471ea..c9878bfed2 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getLabelIdentifierFieldMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getLabelIdentifierFieldMetadataItem.ts @@ -1,10 +1,10 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField'; export const getLabelIdentifierFieldMetadataItem = ( objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'labelIdentifierFieldMetadataId' >, ): FieldMetadataItem | undefined => diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getObjectMetadataIdentifierFields.ts b/packages/twenty-front/src/modules/object-metadata/utils/getObjectMetadataIdentifierFields.ts index b8a2ff361f..64c3a1681b 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getObjectMetadataIdentifierFields.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getObjectMetadataIdentifierFields.ts @@ -1,10 +1,10 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; export const getObjectMetadataIdentifierFields = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const labelIdentifierFieldMetadataItem = getLabelIdentifierFieldMetadataItem(objectMetadataItem); diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getObjectOrderByField.ts b/packages/twenty-front/src/modules/object-metadata/utils/getObjectOrderByField.ts index 1911f4d729..121a224e55 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getObjectOrderByField.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getObjectOrderByField.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { getOrderByForFieldMetadataType } from '@/object-metadata/utils/getOrderByForFieldMetadataType'; @@ -9,7 +9,7 @@ import { import { isDefined } from 'twenty-shared/utils'; export const getOrderByFieldForObjectMetadataItem = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, orderBy?: OrderBy | null, ): RecordGqlOperationOrderBy => { const labelIdentifierFieldMetadata = diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getObjectRecordIdentifier.ts b/packages/twenty-front/src/modules/object-metadata/utils/getObjectRecordIdentifier.ts index 29411b9b84..7a9cb10e60 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getObjectRecordIdentifier.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getObjectRecordIdentifier.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { type ObjectRecordIdentifier } from '@/object-record/types/ObjectRecordIdentifier'; @@ -14,7 +14,7 @@ export const getObjectRecordIdentifier = ({ allowRequestsToTwentyIcons, }: { objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, | 'fields' | 'labelIdentifierFieldMetadataId' | 'nameSingular' diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getOrderByForFieldMetadataType.ts b/packages/twenty-front/src/modules/object-metadata/utils/getOrderByForFieldMetadataType.ts index db541aff24..5ea11e8e22 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getOrderByForFieldMetadataType.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getOrderByForFieldMetadataType.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { @@ -79,7 +79,7 @@ export const getOrderByForFieldMetadataType = ( export const getOrderByForRelationField = ( field: Pick, relatedObjectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'labelIdentifierFieldMetadataId' >, direction: OrderBy, diff --git a/packages/twenty-front/src/modules/object-metadata/utils/hasObjectMetadataItemFieldCreatedBy.ts b/packages/twenty-front/src/modules/object-metadata/utils/hasObjectMetadataItemFieldCreatedBy.ts index cd869cda01..f49f46535f 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/hasObjectMetadataItemFieldCreatedBy.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/hasObjectMetadataItemFieldCreatedBy.ts @@ -1,8 +1,8 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FieldMetadataType } from 'twenty-shared/types'; export const hasObjectMetadataItemFieldCreatedBy = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => objectMetadataItem.fields.some( (field) => diff --git a/packages/twenty-front/src/modules/object-metadata/utils/hasObjectMetadataItemPositionField.ts b/packages/twenty-front/src/modules/object-metadata/utils/hasObjectMetadataItemPositionField.ts index 5c1fef7f03..3c6b190027 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/hasObjectMetadataItemPositionField.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/hasObjectMetadataItemPositionField.ts @@ -1,8 +1,8 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FieldMetadataType } from 'twenty-shared/types'; export const hasObjectMetadataItemPositionField = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => objectMetadataItem.fields.some( (field) => field.type === FieldMetadataType.POSITION, diff --git a/packages/twenty-front/src/modules/object-metadata/utils/isAggregationEnabled.ts b/packages/twenty-front/src/modules/object-metadata/utils/isAggregationEnabled.ts index 6233a817db..10fa105031 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/isAggregationEnabled.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/isAggregationEnabled.ts @@ -1,4 +1,5 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; -export const isAggregationEnabled = (objectMetadataItem: ObjectMetadataItem) => - !objectMetadataItem.isRemote; +export const isAggregationEnabled = ( + objectMetadataItem: EnrichedObjectMetadataItem, +) => !objectMetadataItem.isRemote; diff --git a/packages/twenty-front/src/modules/object-metadata/utils/isImageIdentifierField.ts b/packages/twenty-front/src/modules/object-metadata/utils/isImageIdentifierField.ts index a6eddf35c9..614fc450fe 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/isImageIdentifierField.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/isImageIdentifierField.ts @@ -1,6 +1,6 @@ import { CoreObjectNameSingular } from 'twenty-shared/types'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export const isImageIdentifierField = ({ fieldMetadataItem, @@ -8,7 +8,7 @@ export const isImageIdentifierField = ({ }: { fieldMetadataItem: Pick; objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'imageIdentifierFieldMetadataId' | 'nameSingular' >; }) => { diff --git a/packages/twenty-front/src/modules/object-metadata/utils/isLabelIdentifierField.ts b/packages/twenty-front/src/modules/object-metadata/utils/isLabelIdentifierField.ts index cd8551d571..9e02ae5742 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/isLabelIdentifierField.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/isLabelIdentifierField.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; export const DEFAULT_LABEL_IDENTIFIER_FIELD_NAME = 'name'; @@ -10,7 +10,7 @@ export const isLabelIdentifierField = ({ }: { fieldMetadataItem: Pick; objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'labelIdentifierFieldMetadataId' >; }) => { diff --git a/packages/twenty-front/src/modules/object-metadata/utils/isObjectMetadataAvailableForRelation.ts b/packages/twenty-front/src/modules/object-metadata/utils/isObjectMetadataAvailableForRelation.ts index abc2260e44..4b90e5ffc4 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/isObjectMetadataAvailableForRelation.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/isObjectMetadataAvailableForRelation.ts @@ -1,9 +1,9 @@ import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export const isObjectMetadataAvailableForRelation = ( objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'isSystem' | 'nameSingular' | 'isRemote' >, ) => { diff --git a/packages/twenty-front/src/modules/object-metadata/utils/mapFieldMetadataToGraphQLQuery.ts b/packages/twenty-front/src/modules/object-metadata/utils/mapFieldMetadataToGraphQLQuery.ts index d8937b524a..e436c817c4 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/mapFieldMetadataToGraphQLQuery.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/mapFieldMetadataToGraphQLQuery.ts @@ -1,7 +1,7 @@ import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; import { type RecordGqlFields } from '@/object-record/graphql/record-gql-fields/types/RecordGqlFields'; import { isNonCompositeField } from '@/object-record/object-filter-dropdown/utils/isNonCompositeField'; @@ -13,7 +13,7 @@ import { import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; type MapFieldMetadataToGraphQLQueryArgs = { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; gqlField: string; fieldMetadata: Pick< FieldMetadataItem, diff --git a/packages/twenty-front/src/modules/object-metadata/utils/mapObjectMetadataToGraphQLQuery.ts b/packages/twenty-front/src/modules/object-metadata/utils/mapObjectMetadataToGraphQLQuery.ts index 88a8772ce0..ba017222e0 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/mapObjectMetadataToGraphQLQuery.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/mapObjectMetadataToGraphQLQuery.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; import { mapFieldMetadataToGraphQLQuery } from '@/object-metadata/utils/mapFieldMetadataToGraphQLQuery'; import { shouldFieldBeQueried } from '@/object-metadata/utils/shouldFieldBeQueried'; @@ -8,9 +8,9 @@ import { FieldMetadataType, type ObjectPermissions } from 'twenty-shared/types'; import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; type MapObjectMetadataToGraphQLQueryArgs = { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'nameSingular' | 'fields' | 'id' | 'readableFields' >; recordGqlFields?: RecordGqlFields; diff --git a/packages/twenty-front/src/modules/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems.ts b/packages/twenty-front/src/modules/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems.ts index fa1e601882..9f4b15c1c8 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems.ts @@ -2,7 +2,7 @@ import { type IndexFieldMetadataItem } from '@/object-metadata/types/IndexFieldM import { type IndexMetadataItem } from '@/object-metadata/types/IndexMetadataItem'; import { objectMetadataItemSchema } from '@/object-metadata/validation-schemas/objectMetadataItemSchema'; import { type ObjectMetadataItemsQuery } from '~/generated-metadata/graphql'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; type mapPaginatedObjectMetadataItemsToObjectMetadataItemsArgs = { pagedObjectMetadataItems: ObjectMetadataItemsQuery | undefined; @@ -12,7 +12,7 @@ export const mapPaginatedObjectMetadataItemsToObjectMetadataItems = ({ pagedObjectMetadataItems, }: mapPaginatedObjectMetadataItemsToObjectMetadataItemsArgs) => { const formattedObjects: Omit< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'readableFields' | 'updatableFields' >[] = pagedObjectMetadataItems?.objects.edges.map((object) => { @@ -43,7 +43,7 @@ export const mapPaginatedObjectMetadataItemsToObjectMetadataItems = ({ }) satisfies IndexMetadataItem, ), } satisfies Omit< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'readableFields' | 'updatableFields' >; }) ?? []; diff --git a/packages/twenty-front/src/modules/object-metadata/utils/mapSoftDeleteFieldsToGraphQLQuery.ts b/packages/twenty-front/src/modules/object-metadata/utils/mapSoftDeleteFieldsToGraphQLQuery.ts index 9814addfde..19d13b494d 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/mapSoftDeleteFieldsToGraphQLQuery.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/mapSoftDeleteFieldsToGraphQLQuery.ts @@ -1,7 +1,7 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export const mapSoftDeleteFieldsToGraphQLQuery = ( - objectMetadataItem: Pick, + objectMetadataItem: Pick, ): string => { const softDeleteFields = ['deletedAt', 'id']; diff --git a/packages/twenty-front/src/modules/object-metadata/validation-schemas/__tests__/objectMetadataItemSchema.test.ts b/packages/twenty-front/src/modules/object-metadata/validation-schemas/__tests__/objectMetadataItemSchema.test.ts index 45f7b4e8ae..faf1833969 100644 --- a/packages/twenty-front/src/modules/object-metadata/validation-schemas/__tests__/objectMetadataItemSchema.test.ts +++ b/packages/twenty-front/src/modules/object-metadata/validation-schemas/__tests__/objectMetadataItemSchema.test.ts @@ -1,13 +1,14 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { objectMetadataItemSchema } from '@/object-metadata/validation-schemas/objectMetadataItemSchema'; describe('objectMetadataItemSchema', () => { it('validates a valid object metadata item', () => { // Given - const validObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', - ); + const validObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); // When const result = objectMetadataItemSchema.parse(validObjectMetadataItem); @@ -18,9 +19,10 @@ describe('objectMetadataItemSchema', () => { it('fails for an invalid object metadata item that has null labelIdentifier', () => { // Given - const validObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', - ); + const validObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); expect(validObjectMetadataItem).not.toBeUndefined(); if (validObjectMetadataItem === undefined) throw new Error('Should never occur'); @@ -38,7 +40,7 @@ describe('objectMetadataItemSchema', () => { it('fails for an invalid object metadata item', () => { // Given const invalidObjectMetadataItem: Partial< - Record + Record > = { createdAt: 'invalid date', fields: 'not an array', diff --git a/packages/twenty-front/src/modules/object-record/advanced-filter/hooks/useGetDefaultFieldMetadataItemForFilter.ts b/packages/twenty-front/src/modules/object-record/advanced-filter/hooks/useGetDefaultFieldMetadataItemForFilter.ts index 04d39aa285..39f67e2c78 100644 --- a/packages/twenty-front/src/modules/object-record/advanced-filter/hooks/useGetDefaultFieldMetadataItemForFilter.ts +++ b/packages/twenty-front/src/modules/object-record/advanced-filter/hooks/useGetDefaultFieldMetadataItemForFilter.ts @@ -1,13 +1,13 @@ import { availableFieldMetadataItemsForFilterFamilySelector } from '@/object-metadata/states/availableFieldMetadataItemsForFilterFamilySelector'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useCallback } from 'react'; import { useStore } from 'jotai'; export const useGetDefaultFieldMetadataItemForFilter = () => { const store = useStore(); const getDefaultFieldMetadataItemForFilter = useCallback( - (objectMetadataItem: ObjectMetadataItem) => { + (objectMetadataItem: EnrichedObjectMetadataItem) => { const availableFieldMetadataItemsForFilter = store.get( availableFieldMetadataItemsForFilterFamilySelector.selectorFamily({ objectMetadataItemId: objectMetadataItem.id, diff --git a/packages/twenty-front/src/modules/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelContainer.tsx b/packages/twenty-front/src/modules/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelContainer.tsx index 5433c29ff2..ebe46d9853 100644 --- a/packages/twenty-front/src/modules/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelContainer.tsx +++ b/packages/twenty-front/src/modules/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelContainer.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { AdvancedFilterSidePanelCreateRootFilterButton } from '@/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelCreateRootFilterButton'; import { AdvancedFilterSidePanelRecordFilterColumn } from '@/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelRecordFilterColumn'; import { AdvancedFilterSidePanelRecordFilterGroupColumn } from '@/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelRecordFilterGroupColumn'; @@ -30,7 +30,7 @@ const StyledChildContainer = styled.div` export type AdvancedFilterSidePanelContainerProps = { readonly?: boolean; onUpdate?: () => void; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; VariablePicker?: VariablePickerComponent; isWorkflowFindRecords?: boolean; }; diff --git a/packages/twenty-front/src/modules/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelCreateRootFilterButton.tsx b/packages/twenty-front/src/modules/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelCreateRootFilterButton.tsx index 3779820792..df0445b96c 100644 --- a/packages/twenty-front/src/modules/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelCreateRootFilterButton.tsx +++ b/packages/twenty-front/src/modules/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelCreateRootFilterButton.tsx @@ -1,5 +1,5 @@ import { availableFieldMetadataItemsForFilterFamilySelector } from '@/object-metadata/states/availableFieldMetadataItemsForFilterFamilySelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext'; import { rootLevelRecordFilterGroupComponentSelector } from '@/object-record/advanced-filter/states/rootLevelRecordFilterGroupComponentSelector'; import { useUpsertRecordFilterGroup } from '@/object-record/record-filter-group/hooks/useUpsertRecordFilterGroup'; @@ -20,7 +20,7 @@ import { v4 } from 'uuid'; export const AdvancedFilterSidePanelCreateRootFilterButton = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const { readonly } = useContext(AdvancedFilterContext); const rootRecordFilterGroup = useAtomComponentSelectorValue( diff --git a/packages/twenty-front/src/modules/object-record/advanced-filter/states/context/AdvancedFilterContext.ts b/packages/twenty-front/src/modules/object-record/advanced-filter/states/context/AdvancedFilterContext.ts index cf22eeb6d5..3a4b86c417 100644 --- a/packages/twenty-front/src/modules/object-record/advanced-filter/states/context/AdvancedFilterContext.ts +++ b/packages/twenty-front/src/modules/object-record/advanced-filter/states/context/AdvancedFilterContext.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type VariablePickerComponent } from '@/object-record/record-field/ui/form-types/types/VariablePickerComponent'; import { createContext } from 'react'; @@ -7,7 +7,7 @@ type AdvancedFilterContextType = { isWorkflowFindRecords?: boolean; readonly?: boolean; VariablePicker?: VariablePickerComponent; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const AdvancedFilterContext = createContext( diff --git a/packages/twenty-front/src/modules/object-record/cache/hooks/useCreateOneRecordInCache.ts b/packages/twenty-front/src/modules/object-record/cache/hooks/useCreateOneRecordInCache.ts index a08716ec63..7147d1c243 100644 --- a/packages/twenty-front/src/modules/object-record/cache/hooks/useCreateOneRecordInCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/hooks/useCreateOneRecordInCache.ts @@ -2,7 +2,7 @@ import gql from 'graphql-tag'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache'; import { getRecordNodeFromRecord } from '@/object-record/cache/utils/getRecordNodeFromRecord'; @@ -15,7 +15,7 @@ import { capitalize } from 'twenty-shared/utils'; export const useCreateOneRecordInCache = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const getRecordFromCache = useGetRecordFromCache({ objectNameSingular: objectMetadataItem.nameSingular, diff --git a/packages/twenty-front/src/modules/object-record/cache/hooks/useReadFindManyRecordsQueryInCache.ts b/packages/twenty-front/src/modules/object-record/cache/hooks/useReadFindManyRecordsQueryInCache.ts index dd4cedd9da..bb7f9ee37a 100644 --- a/packages/twenty-front/src/modules/object-record/cache/hooks/useReadFindManyRecordsQueryInCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/hooks/useReadFindManyRecordsQueryInCache.ts @@ -1,6 +1,6 @@ import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection'; import { type RecordGqlOperationFindManyResult } from '@/object-record/graphql/types/RecordGqlOperationFindManyResult'; import { type RecordGqlOperationVariables } from 'twenty-shared/types'; @@ -12,7 +12,7 @@ import { isDefined } from 'twenty-shared/utils'; export const useReadFindManyRecordsQueryInCache = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const apolloCoreClient = useApolloCoreClient(); diff --git a/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindManyRecordsQueryInCache.ts b/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindManyRecordsQueryInCache.ts index 8d7dc7d970..a67708ce89 100644 --- a/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindManyRecordsQueryInCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindManyRecordsQueryInCache.ts @@ -1,7 +1,7 @@ import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getRecordConnectionFromRecords } from '@/object-record/cache/utils/getRecordConnectionFromRecords'; import { type RecordGqlOperationVariables } from 'twenty-shared/types'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; @@ -11,7 +11,7 @@ import { generateFindManyRecordsQuery } from '@/object-record/utils/generateFind export const useUpsertFindManyRecordsQueryInCache = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const apolloCoreClient = useApolloCoreClient(); diff --git a/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindOneRecordQueryInCache.ts b/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindOneRecordQueryInCache.ts index cdf73dc612..3ffe7bf664 100644 --- a/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindOneRecordQueryInCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindOneRecordQueryInCache.ts @@ -1,5 +1,5 @@ import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useFindOneRecordQuery } from '@/object-record/hooks/useFindOneRecordQuery'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; @@ -8,7 +8,7 @@ export const useUpsertFindOneRecordQueryInCache = ({ recordGqlFields, withSoftDeleted = false, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordGqlFields: Record; withSoftDeleted?: boolean; }) => { diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/__tests__/createCacheEdgeWithRecordRef.test.ts b/packages/twenty-front/src/modules/object-record/cache/utils/__tests__/createCacheEdgeWithRecordRef.test.ts index a5160c202c..c05a2da544 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/__tests__/createCacheEdgeWithRecordRef.test.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/__tests__/createCacheEdgeWithRecordRef.test.ts @@ -1,7 +1,7 @@ import { type Reference } from '@apollo/client'; import { encodeCursor } from '@/apollo/utils/encodeCursor'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; import { type FieldFunctionOptions } from '@apollo/client/cache'; @@ -19,7 +19,7 @@ describe('createCacheEdgeWithRecordRef', () => { const objectMetadataItem = { nameSingular: 'person', - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const mockReference: Reference = { __ref: 'Person:123', @@ -53,7 +53,7 @@ describe('createCacheEdgeWithRecordRef', () => { const objectMetadataItem = { nameSingular: 'person', - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const toReference: ToReferenceFunction = jest.fn(() => undefined); diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/__tests__/getRecordNodeFromRecord.test.ts b/packages/twenty-front/src/modules/object-record/cache/utils/__tests__/getRecordNodeFromRecord.test.ts index 8c1234880a..0250afad6c 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/__tests__/getRecordNodeFromRecord.test.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/__tests__/getRecordNodeFromRecord.test.ts @@ -1,7 +1,7 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mockedPersonRecords } from '~/testing/mock-data/generated/data/people/mock-people-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getRecordNodeFromRecord } from '@/object-record/cache/utils/getRecordNodeFromRecord'; const peopleMock = [...mockedPersonRecords]; @@ -9,11 +9,14 @@ const peopleMock = [...mockedPersonRecords]; describe('getRecordNodeFromRecord', () => { it('computes relation records cache references by default', () => { // Given - const objectMetadataItems: ObjectMetadataItem[] = - generatedMockObjectMetadataItems; + const objectMetadataItems: EnrichedObjectMetadataItem[] = + getTestEnrichedObjectMetadataItemsMock(); const objectMetadataItem: - | Pick - | undefined = generatedMockObjectMetadataItems.find( + | Pick< + EnrichedObjectMetadataItem, + 'fields' | 'namePlural' | 'nameSingular' + > + | undefined = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', ); @@ -51,11 +54,14 @@ describe('getRecordNodeFromRecord', () => { it('does not compute relation records cache references when `computeReferences` is false', () => { // Given - const objectMetadataItems: ObjectMetadataItem[] = - generatedMockObjectMetadataItems; + const objectMetadataItems: EnrichedObjectMetadataItem[] = + getTestEnrichedObjectMetadataItemsMock(); const objectMetadataItem: - | Pick - | undefined = generatedMockObjectMetadataItems.find( + | Pick< + EnrichedObjectMetadataItem, + 'fields' | 'namePlural' | 'nameSingular' + > + | undefined = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', ); diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/createCacheEdgeWithRecordRef.ts b/packages/twenty-front/src/modules/object-record/cache/utils/createCacheEdgeWithRecordRef.ts index 5401a576c6..cc560f7728 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/createCacheEdgeWithRecordRef.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/createCacheEdgeWithRecordRef.ts @@ -1,5 +1,5 @@ import { encodeCursor } from '@/apollo/utils/encodeCursor'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlRefEdge } from '@/object-record/cache/types/RecordGqlRefEdge'; import { getEdgeTypename } from '@/object-record/cache/utils/getEdgeTypename'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; @@ -10,7 +10,7 @@ import { isDefined } from 'twenty-shared/utils'; type CreateCacheEdgeWithRecordRefParams = { record: RecordGqlNode; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; toReference: ToReferenceFunction; }; diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/deleteRecordFromCache.ts b/packages/twenty-front/src/modules/object-record/cache/utils/deleteRecordFromCache.ts index 7f9a73ff28..44685aeb1c 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/deleteRecordFromCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/deleteRecordFromCache.ts @@ -1,7 +1,7 @@ import { type ApolloCache } from '@apollo/client'; import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectTypename } from '@/object-record/cache/utils/getObjectTypename'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { type ObjectPermissions } from 'twenty-shared/types'; @@ -14,8 +14,8 @@ export const deleteRecordFromCache = ({ upsertRecordsInStore, objectPermissionsByObjectMetadataId, }: { - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; recordToDestroy: ObjectRecord; cache: ApolloCache; objectPermissionsByObjectMetadataId: Record< diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/getFieldMetadataFromGqlField.ts b/packages/twenty-front/src/modules/object-record/cache/utils/getFieldMetadataFromGqlField.ts index 36d1432ce4..4a80fe3add 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/getFieldMetadataFromGqlField.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/getFieldMetadataFromGqlField.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { computePossibleMorphGqlFieldForFieldName } from '@/object-record/cache/utils/computePossibleMorphGqlFieldForFieldName'; import { isFieldMorphRelation } from '@/object-record/record-field/ui/types/guards/isFieldMorphRelation'; @@ -6,7 +6,7 @@ export const getFieldMetadataFromGqlField = ({ objectMetadataItem, gqlField, }: { - objectMetadataItem: Pick; + objectMetadataItem: Pick; gqlField: string; }) => { return ( diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/getMorphRelationFromFieldMetadataAndGqlField.ts b/packages/twenty-front/src/modules/object-record/cache/utils/getMorphRelationFromFieldMetadataAndGqlField.ts index 2eadff760b..f9556a0684 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/getMorphRelationFromFieldMetadataAndGqlField.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/getMorphRelationFromFieldMetadataAndGqlField.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type FieldMorphRelationMetadata } from '@/object-record/record-field/ui/types/FieldMetadata'; import { computeMorphRelationFieldName } from 'twenty-shared/utils'; @@ -8,7 +8,7 @@ export const getMorphRelationFromFieldMetadataAndGqlField = ({ fieldMetadata, gqlField, }: { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; fieldMetadata: Pick; gqlField: string; }) => { diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/getRecordConnectionFromRecords.ts b/packages/twenty-front/src/modules/object-record/cache/utils/getRecordConnectionFromRecords.ts index 180ec12fa4..870ee6b09f 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/getRecordConnectionFromRecords.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/getRecordConnectionFromRecords.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getConnectionTypename } from '@/object-record/cache/utils/getConnectionTypename'; import { getEmptyPageInfo } from '@/object-record/cache/utils/getEmptyPageInfo'; import { getRecordEdgeFromRecord } from '@/object-record/cache/utils/getRecordEdgeFromRecord'; @@ -15,9 +15,9 @@ export const getRecordConnectionFromRecords = ({ computeReferences = false, isRootLevel = true, }: { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'namePlural' | 'nameSingular' >; records: T[]; diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/getRecordEdgeFromRecord.ts b/packages/twenty-front/src/modules/object-record/cache/utils/getRecordEdgeFromRecord.ts index ed22c830e8..e6ff3744c3 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/getRecordEdgeFromRecord.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/getRecordEdgeFromRecord.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getEdgeTypename } from '@/object-record/cache/utils/getEdgeTypename'; import { getRecordNodeFromRecord } from '@/object-record/cache/utils/getRecordNodeFromRecord'; import { type RecordGqlEdge } from '@/object-record/graphql/types/RecordGqlEdge'; @@ -12,9 +12,9 @@ export const getRecordEdgeFromRecord = ({ computeReferences = false, isRootLevel = false, }: { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'namePlural' | 'nameSingular' >; recordGqlFields?: Record; diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/getRecordFromCache.ts b/packages/twenty-front/src/modules/object-record/cache/utils/getRecordFromCache.ts index 92bc8f3b03..68add84af1 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/getRecordFromCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/getRecordFromCache.ts @@ -1,6 +1,6 @@ import { type ApolloCache, gql } from '@apollo/client'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode'; import { type RecordGqlFields } from '@/object-record/graphql/record-gql-fields/types/RecordGqlFields'; @@ -13,9 +13,9 @@ import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull'; export type GetRecordFromCacheArgs = { cache: ApolloCache; recordId: string; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'nameSingular' | 'id' | 'readableFields' >; recordGqlFields?: RecordGqlFields; diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/getRecordNodeFromRecord.ts b/packages/twenty-front/src/modules/object-record/cache/utils/getRecordNodeFromRecord.ts index f47b89373a..5fbdd3f9ce 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/getRecordNodeFromRecord.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/getRecordNodeFromRecord.ts @@ -1,6 +1,6 @@ import { isNull, isUndefined } from '@sniptt/guards'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { computePossibleMorphGqlFieldForFieldName } from '@/object-record/cache/utils/computePossibleMorphGqlFieldForFieldName'; import { getFieldMetadataFromGqlField } from '@/object-record/cache/utils/getFieldMetadataFromGqlField'; import { getMorphRelationFromFieldMetadataAndGqlField } from '@/object-record/cache/utils/getMorphRelationFromFieldMetadataAndGqlField'; @@ -21,9 +21,9 @@ export const getRecordNodeFromRecord = ({ computeReferences = true, isRootLevel = true, }: { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'fields' | 'namePlural' | 'nameSingular' >; recordGqlFields?: Record; diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/modifyRecordFromCache.ts b/packages/twenty-front/src/modules/object-record/cache/utils/modifyRecordFromCache.ts index b8fb311db3..f43c8f8eb6 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/modifyRecordFromCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/modifyRecordFromCache.ts @@ -1,6 +1,6 @@ import { type ApolloCache, type Modifiers } from '@apollo/client/cache'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { capitalize } from 'twenty-shared/utils'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull'; @@ -13,7 +13,7 @@ export const modifyRecordFromCache = < fieldModifiers, recordId, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; cache: ApolloCache; fieldModifiers: Modifiers; recordId: string; diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/updateRecordFromCache.ts b/packages/twenty-front/src/modules/object-record/cache/utils/updateRecordFromCache.ts index 07418db274..afde362351 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/updateRecordFromCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/updateRecordFromCache.ts @@ -1,7 +1,7 @@ import { type ApolloCache } from '@apollo/client/cache'; import gql from 'graphql-tag'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { getRecordNodeFromRecord } from '@/object-record/cache/utils/getRecordNodeFromRecord'; import { type RecordGqlFields } from '@/object-record/graphql/record-gql-fields/types/RecordGqlFields'; @@ -19,8 +19,8 @@ export const updateRecordFromCache = ({ record, objectPermissionsByObjectMetadataId, }: { - objectMetadataItems: ObjectMetadataItem[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; cache: ApolloCache; recordGqlFields: RecordGqlFields; record: T; diff --git a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateActivityTargetGqlFields.test.ts b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateActivityTargetGqlFields.test.ts index 95cd0244fe..c97e4cab4f 100644 --- a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateActivityTargetGqlFields.test.ts +++ b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateActivityTargetGqlFields.test.ts @@ -1,12 +1,12 @@ import { CoreObjectNameSingular } from 'twenty-shared/types'; import { generateActivityTargetGqlFields } from '@/object-record/graphql/record-gql-fields/utils/generateActivityTargetGqlFields'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; describe('generateActivityTargetGqlFields', () => { describe('snapshot tests', () => { it('should match snapshot for Note with loadRelations="activity"', () => { const result = generateActivityTargetGqlFields({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), activityObjectNameSingular: CoreObjectNameSingular.Note, loadRelations: 'activity', }); @@ -16,7 +16,7 @@ describe('generateActivityTargetGqlFields', () => { it('should match snapshot for Note with loadRelations="both"', () => { const result = generateActivityTargetGqlFields({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), activityObjectNameSingular: CoreObjectNameSingular.Note, loadRelations: 'both', }); @@ -26,7 +26,7 @@ describe('generateActivityTargetGqlFields', () => { it('should match snapshot for Note with loadRelations="relations"', () => { const result = generateActivityTargetGqlFields({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), activityObjectNameSingular: CoreObjectNameSingular.Note, loadRelations: 'relations', }); @@ -36,7 +36,7 @@ describe('generateActivityTargetGqlFields', () => { it('should match snapshot for Task with loadRelations="activity"', () => { const result = generateActivityTargetGqlFields({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), activityObjectNameSingular: CoreObjectNameSingular.Task, loadRelations: 'activity', }); @@ -46,7 +46,7 @@ describe('generateActivityTargetGqlFields', () => { it('should match snapshot for Task with loadRelations="both"', () => { const result = generateActivityTargetGqlFields({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), activityObjectNameSingular: CoreObjectNameSingular.Task, loadRelations: 'both', }); @@ -56,7 +56,7 @@ describe('generateActivityTargetGqlFields', () => { it('should match snapshot for Task with loadRelations="relations"', () => { const result = generateActivityTargetGqlFields({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), activityObjectNameSingular: CoreObjectNameSingular.Task, loadRelations: 'relations', }); diff --git a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateDepthRecordGqlFieldsFromObject.test.ts b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateDepthRecordGqlFieldsFromObject.test.ts index 7f06bb1c2b..66e5a7670a 100644 --- a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateDepthRecordGqlFieldsFromObject.test.ts +++ b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateDepthRecordGqlFieldsFromObject.test.ts @@ -1,12 +1,12 @@ import { generateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; describe('generateDepthRecordGqlFieldsFromObject', () => { it('should generate depth one record gql fields from object', () => { const result = generateDepthRecordGqlFieldsFromObject({ objectMetadataItem: getMockObjectMetadataItemOrThrow('company'), - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), depth: 1, }); @@ -16,7 +16,7 @@ describe('generateDepthRecordGqlFieldsFromObject', () => { it('should generate depth zero record gql fields from object', () => { const result = generateDepthRecordGqlFieldsFromObject({ objectMetadataItem: getMockObjectMetadataItemOrThrow('company'), - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), depth: 0, }); diff --git a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateDepthRecordGqlFieldsFromRecord.test.ts b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateDepthRecordGqlFieldsFromRecord.test.ts index 11c2de5e0d..9fad889b07 100644 --- a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateDepthRecordGqlFieldsFromRecord.test.ts +++ b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/__tests__/generateDepthRecordGqlFieldsFromRecord.test.ts @@ -1,12 +1,12 @@ import { generateDepthRecordGqlFieldsFromRecord } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromRecord'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; describe('generateDepthRecordGqlFieldsFromRecord', () => { it('should generate depth one record gql fields from record with some fields', () => { const result = generateDepthRecordGqlFieldsFromRecord({ objectMetadataItem: getMockObjectMetadataItemOrThrow('company'), - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), depth: 1, record: { id: '123', @@ -21,7 +21,7 @@ describe('generateDepthRecordGqlFieldsFromRecord', () => { it('should generate depth zero record gql fields from record with some fields', () => { const result = generateDepthRecordGqlFieldsFromRecord({ objectMetadataItem: getMockObjectMetadataItemOrThrow('company'), - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), depth: 0, record: { id: '123', @@ -35,7 +35,7 @@ describe('generateDepthRecordGqlFieldsFromRecord', () => { it('should generate depth one record gql fields from empty record', () => { const result = generateDepthRecordGqlFieldsFromRecord({ objectMetadataItem: getMockObjectMetadataItemOrThrow('company'), - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), depth: 1, record: {}, }); diff --git a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/buildIdentifierGqlFields.ts b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/buildIdentifierGqlFields.ts index 0df0513cc0..8b95cd4c10 100644 --- a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/buildIdentifierGqlFields.ts +++ b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/buildIdentifierGqlFields.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getImageIdentifierFieldMetadataItem } from '@/object-metadata/utils/getImageIdentifierFieldMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { type RecordGqlFields } from '@/object-record/graphql/record-gql-fields/types/RecordGqlFields'; @@ -6,7 +6,7 @@ import { isDefined } from 'twenty-shared/utils'; export const buildIdentifierGqlFields = ( objectMetadata: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, | 'fields' | 'labelIdentifierFieldMetadataId' | 'imageIdentifierFieldMetadataId' diff --git a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateActivityTargetGqlFields.ts b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateActivityTargetGqlFields.ts index dcc9893ad6..4ef2931121 100644 --- a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateActivityTargetGqlFields.ts +++ b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateActivityTargetGqlFields.ts @@ -1,12 +1,12 @@ import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { generateDepthRecordGqlFieldsFromFields } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromFields'; import { isDefined } from 'twenty-shared/utils'; export type GenerateDepthRecordGqlFields = { objectMetadataItems: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, | 'id' | 'nameSingular' | 'namePlural' diff --git a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromFields.ts b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromFields.ts index d288da15ea..39965685e5 100644 --- a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromFields.ts +++ b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromFields.ts @@ -5,7 +5,7 @@ import { RelationType, } from 'twenty-shared/types'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getImageIdentifierFieldMetadataItem } from '@/object-metadata/utils/getImageIdentifierFieldMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { type RecordGqlFields } from '@/object-record/graphql/record-gql-fields/types/RecordGqlFields'; @@ -16,7 +16,7 @@ import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; export type GenerateDepthRecordGqlFieldsFromFields = { objectMetadataItems: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, | 'id' | 'fields' | 'labelIdentifierFieldMetadataId' diff --git a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject.ts b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject.ts index 99fc6736cb..b8393a42a5 100644 --- a/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject.ts +++ b/packages/twenty-front/src/modules/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateDepthRecordGqlFieldsFromFields } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromFields'; export type GenerateDepthRecordGqlFields = { - objectMetadataItems: ObjectMetadataItem[]; - objectMetadataItem: Pick; + objectMetadataItems: EnrichedObjectMetadataItem[]; + objectMetadataItem: Pick; depth: 0 | 1; shouldOnlyLoadRelationIdentifiers?: boolean; }; diff --git a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useAggregateRecordsQuery.test.tsx b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useAggregateRecordsQuery.test.tsx index 4502ebf108..8c6fe0103b 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useAggregateRecordsQuery.test.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useAggregateRecordsQuery.test.tsx @@ -1,6 +1,6 @@ import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useAggregateRecordsQuery } from '@/object-record/hooks/useAggregateRecordsQuery'; import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations'; import { generateAggregateQuery } from '@/object-record/utils/generateAggregateQuery'; @@ -36,7 +36,7 @@ const fields = [ } as FieldMetadataItem, ]; -const mockObjectMetadataItem: ObjectMetadataItem = { +const mockObjectMetadataItem: EnrichedObjectMetadataItem = { nameSingular: 'company', namePlural: 'companies', id: 'test-id', diff --git a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useDeleteManyRecords.test.tsx b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useDeleteManyRecords.test.tsx index 0fe7b0491d..82c2700f21 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useDeleteManyRecords.test.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useDeleteManyRecords.test.tsx @@ -17,7 +17,7 @@ import { InMemoryCache } from '@apollo/client'; import { type MockedResponse } from '@apollo/client/testing'; import { act } from 'react'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; const getDefaultMocks = ( @@ -43,7 +43,7 @@ const mockRefetchAggregateQueries = jest.fn(); refetchAggregateQueries: mockRefetchAggregateQueries, }); const objectMetadataItem = getMockObjectMetadataItemOrThrow('person'); -const objectMetadataItems = generatedMockObjectMetadataItems; +const objectMetadataItems = getTestEnrichedObjectMetadataItemsMock(); const expectedCachedRecordsWithDeletedAt = personRecords.map( (personRecord) => ({ ...personRecord, @@ -120,7 +120,7 @@ describe('useDeleteManyRecords', () => { objectMetadataItems, record, recordGqlFields: generateDepthRecordGqlFieldsFromRecord({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem, record, depth: 1, diff --git a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useDeleteOneRecord.test.tsx b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useDeleteOneRecord.test.tsx index 8635bb7e27..3e07d020ec 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useDeleteOneRecord.test.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useDeleteOneRecord.test.tsx @@ -11,7 +11,7 @@ import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMeta import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode'; import { mockedCompanyRecords } from '~/testing/mock-data/generated/data/companies/mock-companies-data'; import { mockedPersonRecords } from '~/testing/mock-data/generated/data/people/mock-people-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; jest.mock('@/object-record/hooks/useRefetchAggregateQueries'); @@ -39,7 +39,7 @@ describe('useDeleteOneRecord', () => { const relatedCompanyRecord = flatCompanyRecords[0]; const personObjectMetadataItem = getMockObjectMetadataItemOrThrow('person'); const companyObjectMetadataItem = getMockObjectMetadataItemOrThrow('company'); - const objectMetadataItems = generatedMockObjectMetadataItems; + const objectMetadataItems = getTestEnrichedObjectMetadataItemsMock(); const getDefaultMocks = ( overrides?: Partial, diff --git a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useFindManyRecords.test.tsx b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useFindManyRecords.test.tsx index 52e40426ca..4669bb8084 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useFindManyRecords.test.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useFindManyRecords.test.tsx @@ -5,11 +5,11 @@ import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { setTestObjectMetadataItemsInMetadataStore } from '~/testing/utils/setTestObjectMetadataItemsInMetadataStore'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); const Wrapper = getJestMetadataAndApolloMocksWrapper({ diff --git a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useGenerateFindManyRecordsForMultipleMetadataItemsQuery.test.tsx b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useGenerateFindManyRecordsForMultipleMetadataItemsQuery.test.tsx index 267eca77cc..978db0a542 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useGenerateFindManyRecordsForMultipleMetadataItemsQuery.test.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useGenerateFindManyRecordsForMultipleMetadataItemsQuery.test.tsx @@ -3,7 +3,7 @@ import { type ReactNode } from 'react'; import { useGenerateCombinedFindManyRecordsQuery } from '@/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery'; import { JestObjectMetadataItemSetter } from '~/testing/jest/JestObjectMetadataItemSetter'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const Wrapper = ({ children }: { children: ReactNode }) => ( {children} @@ -14,7 +14,7 @@ describe('useGenerateFindManyRecordsForMultipleMetadataItemsQuery', () => { const { result } = renderHook( () => { return useGenerateCombinedFindManyRecordsQuery({ - operationSignatures: generatedMockObjectMetadataItems + operationSignatures: getTestEnrichedObjectMetadataItemsMock() .slice(0, 2) .map((item) => ({ objectNameSingular: item.nameSingular, diff --git a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useLazyFetchAllRecords.test.tsx b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useLazyFetchAllRecords.test.tsx index 4b8a537026..d35eaa407e 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useLazyFetchAllRecords.test.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useLazyFetchAllRecords.test.tsx @@ -4,7 +4,7 @@ import { type MockedResponse } from '@apollo/client/testing'; import { act, renderHook, waitFor } from '@testing-library/react'; import gql from 'graphql-tag'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const defaultResponseData = { pageInfo: { @@ -133,7 +133,7 @@ const Wrapper = getJestMetadataAndApolloMocksAndCommandMenuWrapper({ describe('useLazyFetchAllRecords', () => { const objectNameSingular = 'person'; - const objectMetadataItem = generatedMockObjectMetadataItems.find( + const objectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === objectNameSingular, ); if (!objectMetadataItem) { diff --git a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useUpdateManyRecords.test.tsx b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useUpdateManyRecords.test.tsx index ee971ec5fc..08eb50ecd1 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useUpdateManyRecords.test.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useUpdateManyRecords.test.tsx @@ -18,7 +18,7 @@ import { InMemoryCache } from '@apollo/client'; import { type MockedResponse } from '@apollo/client/testing'; import { act } from 'react'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; const getDefaultMocks = ( @@ -45,7 +45,7 @@ const mockRefetchAggregateQueries = jest.fn(); }); const objectMetadataItem = getMockObjectMetadataItemOrThrow('person'); -const objectMetadataItems = generatedMockObjectMetadataItems; +const objectMetadataItems = getTestEnrichedObjectMetadataItemsMock(); const expectedCachedRecordsWithUpdatedCity = personRecords.map( (personRecord) => ({ @@ -126,7 +126,7 @@ describe('useUpdateManyRecords', () => { objectMetadataItems, record, recordGqlFields: generateDepthRecordGqlFieldsFromRecord({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem, record, depth: 1, diff --git a/packages/twenty-front/src/modules/object-record/hooks/useBuildRecordInputFromRLSPredicates.ts b/packages/twenty-front/src/modules/object-record/hooks/useBuildRecordInputFromRLSPredicates.ts index 4cb4cced7f..8aa36ad5fa 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useBuildRecordInputFromRLSPredicates.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useBuildRecordInputFromRLSPredicates.ts @@ -1,6 +1,6 @@ /* @license Enterprise */ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { convertPredicateToRecordFilter } from '@/settings/roles/role-permissions/object-level-permissions/record-level-permissions/utils/recordLevelPermissionPredicateConversion'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; @@ -28,7 +28,7 @@ const mergeCompositeValues = ( export const useBuildRecordInputFromRLSPredicates = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const currentWorkspaceMember = useAtomStateValue(currentWorkspaceMemberState); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useFetchMoreRecordsWithPagination.ts b/packages/twenty-front/src/modules/object-record/hooks/useFetchMoreRecordsWithPagination.ts index ca51cf6dfb..8d1b495d28 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useFetchMoreRecordsWithPagination.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useFetchMoreRecordsWithPagination.ts @@ -8,7 +8,7 @@ import { import { isNonEmptyString } from '@sniptt/guards'; import { useCallback, useMemo } from 'react'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier'; import { isAggregationEnabled } from '@/object-metadata/utils/isAggregationEnabled'; import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection'; @@ -60,7 +60,7 @@ type UseFindManyRecordsStateParams< TFetchVars >, ): Promise>; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const useFetchMoreRecordsWithPagination = < diff --git a/packages/twenty-front/src/modules/object-record/hooks/useHandleFindManyRecordsCompleted.ts b/packages/twenty-front/src/modules/object-record/hooks/useHandleFindManyRecordsCompleted.ts index 339b0a2198..1ba51432b1 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useHandleFindManyRecordsCompleted.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useHandleFindManyRecordsCompleted.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection'; import { type RecordGqlOperationFindManyResult } from '@/object-record/graphql/types/RecordGqlOperationFindManyResult'; import { cursorFamilyState } from '@/object-record/states/cursorFamilyState'; @@ -14,7 +14,7 @@ export const useHandleFindManyRecordsCompleted = ({ objectMetadataItem, }: { queryIdentifier: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; onCompleted?: OnFindManyRecordsCompleted; }) => { const store = useStore(); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useHandleFindManyRecordsError.ts b/packages/twenty-front/src/modules/object-record/hooks/useHandleFindManyRecordsError.ts index 2bb0684574..96be9dc99a 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useHandleFindManyRecordsError.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useHandleFindManyRecordsError.ts @@ -1,7 +1,7 @@ import { CombinedGraphQLErrors } from '@apollo/client/errors'; import { type ErrorLike } from '@apollo/client'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; import { useCallback } from 'react'; import { logError } from '~/utils/logError'; @@ -10,7 +10,7 @@ export const useHandleFindManyRecordsError = ({ handleError, objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; handleError?: (error?: Error) => void; }) => { const { enqueueErrorSnackBar } = useSnackBar(); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useLazyFetchMoreRecordsWithPagination.ts b/packages/twenty-front/src/modules/object-record/hooks/useLazyFetchMoreRecordsWithPagination.ts index e611223fd0..c09eebb1ea 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useLazyFetchMoreRecordsWithPagination.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useLazyFetchMoreRecordsWithPagination.ts @@ -8,7 +8,7 @@ import { import { isNonEmptyString } from '@sniptt/guards'; import { useCallback } from 'react'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier'; import { isAggregationEnabled } from '@/object-metadata/utils/isAggregationEnabled'; import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection'; @@ -58,7 +58,7 @@ type UseFindManyRecordsStateParams< TFetchVars >, ): Promise>; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const useLazyFetchMoreRecordsWithPagination = < diff --git a/packages/twenty-front/src/modules/object-record/hooks/useRefetchAggregateQueriesForObjectMetadataItem.ts b/packages/twenty-front/src/modules/object-record/hooks/useRefetchAggregateQueriesForObjectMetadataItem.ts index c132d841ca..dd5f75aa6c 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useRefetchAggregateQueriesForObjectMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useRefetchAggregateQueriesForObjectMetadataItem.ts @@ -1,5 +1,5 @@ import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getGroupByAggregateQueryName } from '@/object-record/record-aggregate/utils/getGroupByAggregateQueryName'; import { getAggregateQueryName } from '@/object-record/utils/getAggregateQueryName'; @@ -9,7 +9,7 @@ export const useRefetchAggregateQueriesForObjectMetadataItem = () => { const refetchAggregateQueriesForObjectMetadataItem = async ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const queryName = getAggregateQueryName(objectMetadataItem.namePlural); const groupByAggregateQueryName = getGroupByAggregateQueryName({ diff --git a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/__tests__/useCombinedFindManyRecords.test.tsx b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/__tests__/useCombinedFindManyRecords.test.tsx index 5975f74d25..bc6aa41431 100644 --- a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/__tests__/useCombinedFindManyRecords.test.tsx +++ b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/__tests__/useCombinedFindManyRecords.test.tsx @@ -8,7 +8,7 @@ import { useCombinedFindManyRecords } from '@/object-record/multiple-objects/hoo import { useGenerateCombinedFindManyRecordsQuery } from '@/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; jest.mock( '@/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery', @@ -125,7 +125,7 @@ const renderUseCombinedFindManyRecordsHook = async ({ setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); const { result } = renderHook( diff --git a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/usePerformCombinedFindManyRecords.ts b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/usePerformCombinedFindManyRecords.ts index 647b30b65c..dfd961fbcb 100644 --- a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/usePerformCombinedFindManyRecords.ts +++ b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/usePerformCombinedFindManyRecords.ts @@ -3,7 +3,7 @@ import { isUndefined } from '@sniptt/guards'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection'; import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery'; @@ -23,7 +23,7 @@ export const usePerformCombinedFindManyRecords = () => { const generateCombinedFindManyRecordsQuery = ( operationSignatures: RecordGqlOperationSignature[], - objectMetadataItemsValue: ObjectMetadataItem[], + objectMetadataItemsValue: EnrichedObjectMetadataItem[], ) => { const filterPerMetadataItemArray = operationSignatures .map( diff --git a/packages/twenty-front/src/modules/object-record/multiple-objects/utils/getCombinedFindManyRecordsQueryFilteringPart.ts b/packages/twenty-front/src/modules/object-record/multiple-objects/utils/getCombinedFindManyRecordsQueryFilteringPart.ts index 3f021d53e5..a368aaf0f3 100644 --- a/packages/twenty-front/src/modules/object-record/multiple-objects/utils/getCombinedFindManyRecordsQueryFilteringPart.ts +++ b/packages/twenty-front/src/modules/object-record/multiple-objects/utils/getCombinedFindManyRecordsQueryFilteringPart.ts @@ -1,8 +1,8 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { capitalize } from 'twenty-shared/utils'; export const getCombinedFindManyRecordsQueryFilteringPart = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { return `${objectMetadataItem.namePlural}( filter: $filter${capitalize(objectMetadataItem.nameSingular)}, diff --git a/packages/twenty-front/src/modules/object-record/multiple-objects/utils/getLimitPerMetadataItem.ts b/packages/twenty-front/src/modules/object-record/multiple-objects/utils/getLimitPerMetadataItem.ts index 4b598b63c3..99adfadee7 100644 --- a/packages/twenty-front/src/modules/object-record/multiple-objects/utils/getLimitPerMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-record/multiple-objects/utils/getLimitPerMetadataItem.ts @@ -1,8 +1,8 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { capitalize } from 'twenty-shared/utils'; export const getLimitPerMetadataItem = ( - objectMetadataItems: Pick[], + objectMetadataItems: Pick[], limit: number, ) => { return Object.fromEntries( diff --git a/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdown.tsx b/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdown.tsx index 5b6a4c3b34..6a76ad30d5 100644 --- a/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdown.tsx +++ b/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdown.tsx @@ -1,5 +1,5 @@ import { useDropdownContextCurrentContentId } from '@/dropdown-context-state-management/hooks/useDropdownContextCurrentContentId'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { ObjectOptionsDropdownContent } from '@/object-record/object-options-dropdown/components/ObjectOptionsDropdownContent'; import { OBJECT_OPTIONS_DROPDOWN_ID } from '@/object-record/object-options-dropdown/constants/ObjectOptionsDropdownId'; import { ObjectOptionsDropdownContext } from '@/object-record/object-options-dropdown/states/contexts/ObjectOptionsDropdownContext'; @@ -16,7 +16,7 @@ import { Trans } from '@lingui/react/macro'; type ObjectOptionsDropdownProps = { viewType: ViewType; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordIndexId: string; }; diff --git a/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/__stories__/ObjectOptionsDropdownContent.stories.tsx b/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/__stories__/ObjectOptionsDropdownContent.stories.tsx index 48cf224b38..c819b8adce 100644 --- a/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/__stories__/ObjectOptionsDropdownContent.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/__stories__/ObjectOptionsDropdownContent.stories.tsx @@ -20,7 +20,7 @@ import { ContextStoreDecorator } from '~/testing/decorators/ContextStoreDecorato import { IconsProviderDecorator } from '~/testing/decorators/IconsProviderDecorator'; import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; const instanceId = 'entity-options-instance'; @@ -34,7 +34,7 @@ const meta: Meta = { useEffect(() => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); }, []); @@ -72,9 +72,10 @@ type Story = StoryObj; const createStory = (contentId: ObjectOptionsContentId | null): Story => ({ decorators: [ (Story) => { - const companyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', - )!; + const companyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + )!; const { fieldDefinitionByFieldMetadataItemId, diff --git a/packages/twenty-front/src/modules/object-record/object-options-dropdown/states/contexts/ObjectOptionsDropdownContext.ts b/packages/twenty-front/src/modules/object-record/object-options-dropdown/states/contexts/ObjectOptionsDropdownContext.ts index 8786478a24..195efe7668 100644 --- a/packages/twenty-front/src/modules/object-record/object-options-dropdown/states/contexts/ObjectOptionsDropdownContext.ts +++ b/packages/twenty-front/src/modules/object-record/object-options-dropdown/states/contexts/ObjectOptionsDropdownContext.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectOptionsContentId } from '@/object-record/object-options-dropdown/types/ObjectOptionsContentId'; import { type ViewType } from '@/views/types/ViewType'; import { type OnDragEndResponder } from '@hello-pangea/dnd'; @@ -6,7 +6,7 @@ import { createContext } from 'react'; export type ObjectOptionsDropdownContextValue = { recordIndexId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; viewType: ViewType; currentContentId: ObjectOptionsContentId | null; onContentChange: (key: ObjectOptionsContentId) => void; diff --git a/packages/twenty-front/src/modules/object-record/object-sort-dropdown/utils/__tests__/turnSortsIntoOrderBy.test.ts b/packages/twenty-front/src/modules/object-record/object-sort-dropdown/utils/__tests__/turnSortsIntoOrderBy.test.ts index 4c6b54d0ee..c2413d17b3 100644 --- a/packages/twenty-front/src/modules/object-record/object-sort-dropdown/utils/__tests__/turnSortsIntoOrderBy.test.ts +++ b/packages/twenty-front/src/modules/object-record/object-sort-dropdown/utils/__tests__/turnSortsIntoOrderBy.test.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlOperationOrderBy } from 'twenty-shared/types'; import { turnSortsIntoOrderBy } from '@/object-record/object-sort-dropdown/utils/turnSortsIntoOrderBy'; import { type RecordSort } from '@/object-record/record-sort/types/RecordSort'; @@ -22,7 +22,7 @@ const fields = [ }, ]; -const objectMetadataItemWithPositionField: ObjectMetadataItem = { +const objectMetadataItemWithPositionField: EnrichedObjectMetadataItem = { id: 'object1', universalIdentifier: 'object1', fields, @@ -64,7 +64,9 @@ type TurnSortsIntoOrderTestContext = EachTestingContext<{ fields: PartialFieldMetadaItemWithRequiredId[]; expected: RecordGqlOperationOrderBy; sort: RecordSort[]; - objectMetadataItemOverrides?: Partial>; + objectMetadataItemOverrides?: Partial< + Omit + >; }>; const turnSortsIntoOrderByTestUseCases: TurnSortsIntoOrderTestContext[] = [ @@ -171,7 +173,7 @@ describe('turnSortsIntoOrderBy', () => { ); describe('relation field sorting', () => { - const companyObjectMetadataItem: ObjectMetadataItem = { + const companyObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'company-object-id', universalIdentifier: 'company-object-id', fields: [ @@ -206,7 +208,7 @@ describe('turnSortsIntoOrderBy', () => { isLabelSyncedWithName: true, }; - const personObjectMetadataItem: ObjectMetadataItem = { + const personObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'person-object-id', universalIdentifier: 'person-object-id', fields: [ diff --git a/packages/twenty-front/src/modules/object-record/object-sort-dropdown/utils/turnSortsIntoOrderBy.ts b/packages/twenty-front/src/modules/object-record/object-sort-dropdown/utils/turnSortsIntoOrderBy.ts index 720e2f2962..e0b29a0a37 100644 --- a/packages/twenty-front/src/modules/object-record/object-sort-dropdown/utils/turnSortsIntoOrderBy.ts +++ b/packages/twenty-front/src/modules/object-record/object-sort-dropdown/utils/turnSortsIntoOrderBy.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type OrderBy, @@ -20,9 +20,9 @@ import { } from '~/generated-metadata/graphql'; export const turnSortsIntoOrderBy = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, sorts: RecordSort[], - objectMetadataItems: ObjectMetadataItem[] = [], + objectMetadataItems: EnrichedObjectMetadataItem[] = [], ): RecordGqlOperationOrderBy => { const fields = objectMetadataItem?.fields ?? []; diff --git a/packages/twenty-front/src/modules/object-record/read-only/utils/isObjectMetadataReadOnly.ts b/packages/twenty-front/src/modules/object-record/read-only/utils/isObjectMetadataReadOnly.ts index cf17c00784..420e13a8f5 100644 --- a/packages/twenty-front/src/modules/object-record/read-only/utils/isObjectMetadataReadOnly.ts +++ b/packages/twenty-front/src/modules/object-record/read-only/utils/isObjectMetadataReadOnly.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectPermission } from '~/generated-metadata/graphql'; import { isDefined } from 'twenty-shared/utils'; type IsObjectMetadataReadOnlyParams = { objectPermissions?: ObjectPermission; objectMetadataItem?: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'isUIReadOnly' | 'isRemote' | 'applicationId' >; }; diff --git a/packages/twenty-front/src/modules/object-record/read-only/utils/isRecordReadOnly.ts b/packages/twenty-front/src/modules/object-record/read-only/utils/isRecordReadOnly.ts index 93c4b30b56..73a9c080b4 100644 --- a/packages/twenty-front/src/modules/object-record/read-only/utils/isRecordReadOnly.ts +++ b/packages/twenty-front/src/modules/object-record/read-only/utils/isRecordReadOnly.ts @@ -1,10 +1,13 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isObjectMetadataReadOnly } from '@/object-record/read-only/utils/isObjectMetadataReadOnly'; import { type ObjectPermission } from '~/generated-metadata/graphql'; export type IsObjectReadOnlyParams = { objectPermissions: ObjectPermission; - objectMetadataItem: Pick; + objectMetadataItem: Pick< + EnrichedObjectMetadataItem, + 'isUIReadOnly' | 'isRemote' + >; isRecordDeleted: boolean; }; diff --git a/packages/twenty-front/src/modules/object-record/record-aggregate/utils/generateGroupByAggregateQuery.ts b/packages/twenty-front/src/modules/object-record/record-aggregate/utils/generateGroupByAggregateQuery.ts index 45f2217663..9868d75941 100644 --- a/packages/twenty-front/src/modules/object-record/record-aggregate/utils/generateGroupByAggregateQuery.ts +++ b/packages/twenty-front/src/modules/object-record/record-aggregate/utils/generateGroupByAggregateQuery.ts @@ -1,6 +1,6 @@ import gql from 'graphql-tag'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getGroupByAggregateQueryName } from '@/object-record/record-aggregate/utils/getGroupByAggregateQueryName'; import { getGroupByQueryResultGqlFieldName } from '@/page-layout/utils/getGroupByQueryResultGqlFieldName'; import { capitalize } from 'twenty-shared/utils'; @@ -9,7 +9,7 @@ export const generateGroupByAggregateQuery = ({ objectMetadataItem, aggregateOperationGqlFields, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; aggregateOperationGqlFields: string[]; }) => { const capitalizedSingular = capitalize(objectMetadataItem.nameSingular); diff --git a/packages/twenty-front/src/modules/object-record/record-aggregate/utils/generateGroupsRecordsGroupByQuery.ts b/packages/twenty-front/src/modules/object-record/record-aggregate/utils/generateGroupsRecordsGroupByQuery.ts index ba5e32aa52..f791640278 100644 --- a/packages/twenty-front/src/modules/object-record/record-aggregate/utils/generateGroupsRecordsGroupByQuery.ts +++ b/packages/twenty-front/src/modules/object-record/record-aggregate/utils/generateGroupsRecordsGroupByQuery.ts @@ -1,6 +1,6 @@ import gql from 'graphql-tag'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { getGroupByQueryResultGqlFieldName } from '@/page-layout/utils/getGroupByQueryResultGqlFieldName'; import { @@ -16,8 +16,8 @@ export const generateGroupsRecordsGroupByQuery = ({ computeReferences, objectPermissionsByObjectMetadataId, }: { - objectMetadataItems: ObjectMetadataItem[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; recordGqlFields: RecordGqlOperationGqlRecordFields; computeReferences?: boolean; objectPermissionsByObjectMetadataId: Record< diff --git a/packages/twenty-front/src/modules/object-record/record-board/contexts/RecordBoardContext.ts b/packages/twenty-front/src/modules/object-record/record-board/contexts/RecordBoardContext.ts index 44b4c084b5..e4cd2efc5b 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/contexts/RecordBoardContext.ts +++ b/packages/twenty-front/src/modules/object-record/record-board/contexts/RecordBoardContext.ts @@ -1,12 +1,12 @@ import { createContext } from 'react'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { type ObjectPermission } from '~/generated-metadata/graphql'; type RecordBoardContextProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; selectFieldMetadataItem: FieldMetadataItem; createOneRecord: (recordInput: Partial) => void; updateOneRecord: ({ diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdown.tsx b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdown.tsx index 03a839b718..ab1cbe6430 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdown.tsx +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdown.tsx @@ -1,5 +1,5 @@ import { useDropdownContextCurrentContentId } from '@/dropdown-context-state-management/hooks/useDropdownContextCurrentContentId'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordBoardColumnHeaderAggregateDropdownComponentInstanceContext } from '@/object-record/record-board/contexts/RecordBoardColumnHeaderAggregateDropdownComponentInstanceContext'; import { RecordBoardColumnHeaderAggregateDropdownButton } from '@/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownButton'; import { AggregateDropdownContent } from '@/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContent'; @@ -13,7 +13,7 @@ import { type Nullable } from 'twenty-shared/types'; type RecordBoardColumnHeaderAggregateDropdownProps = { aggregateValue?: Nullable; aggregateLabel?: Nullable; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; dropdownId: string; }; diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContext.tsx b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContext.tsx index c16c252275..2288981310 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContext.tsx +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeaderAggregateDropdownContext.tsx @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordBoardColumnHeaderAggregateContentId } from '@/object-record/record-board/types/RecordBoardColumnHeaderAggregateContentId'; import { createContext } from 'react'; export type RecordBoardColumnHeaderAggregateDropdownContextValue = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; currentContentId: RecordBoardColumnHeaderAggregateContentId | null; onContentChange: (key: RecordBoardColumnHeaderAggregateContentId) => void; resetContent: () => void; diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/utils/__tests__/buildRecordGqlFieldsAggregateForView.test.ts b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/utils/__tests__/buildRecordGqlFieldsAggregateForView.test.ts index a7d85f8b32..f47f6c4e55 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/utils/__tests__/buildRecordGqlFieldsAggregateForView.test.ts +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/utils/__tests__/buildRecordGqlFieldsAggregateForView.test.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { buildRecordGqlFieldsAggregateForView } from '@/object-record/record-board/record-board-column/utils/buildRecordGqlFieldsAggregateForView'; import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations'; @@ -29,7 +29,7 @@ describe('buildRecordGqlFieldsAggregateForView', () => { } as FieldMetadataItem, ]; - const mockObjectMetadata: ObjectMetadataItem = { + const mockObjectMetadata: EnrichedObjectMetadataItem = { id: '123', universalIdentifier: '123', nameSingular: 'opportunity', diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/utils/buildRecordGqlFieldsAggregateForView.ts b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/utils/buildRecordGqlFieldsAggregateForView.ts index b526e2d64c..8481a5a32c 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/utils/buildRecordGqlFieldsAggregateForView.ts +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/utils/buildRecordGqlFieldsAggregateForView.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlFieldsAggregate } from '@/object-record/graphql/types/RecordGqlFieldsAggregate'; import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations'; @@ -13,7 +13,7 @@ export const buildRecordGqlFieldsAggregateForView = ({ recordIndexGroupAggregateFieldMetadataItem, recordIndexGroupAggregateOperation, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordIndexGroupAggregateFieldMetadataItem: Nullable; recordIndexGroupAggregateOperation: ExtendedAggregateOperations; }): RecordGqlFieldsAggregate => { diff --git a/packages/twenty-front/src/modules/object-record/record-calendar/contexts/RecordCalendarContext.ts b/packages/twenty-front/src/modules/object-record/record-calendar/contexts/RecordCalendarContext.ts index 0451e3c838..8fda9bd941 100644 --- a/packages/twenty-front/src/modules/object-record/record-calendar/contexts/RecordCalendarContext.ts +++ b/packages/twenty-front/src/modules/object-record/record-calendar/contexts/RecordCalendarContext.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordField } from '@/object-record/record-field/types/RecordField'; import { type ObjectPermission } from '~/generated-metadata/graphql'; import { createRequiredContext } from '~/utils/createRequiredContext'; @@ -6,7 +6,7 @@ import { createRequiredContext } from '~/utils/createRequiredContext'; type RecordCalendarContextValue = { viewBarInstanceId: string; objectNameSingular: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; objectPermissions: ObjectPermission; visibleRecordFields: RecordField[]; }; diff --git a/packages/twenty-front/src/modules/object-record/record-calendar/month/components/__stories__/RecordCalendarMonth.stories.tsx b/packages/twenty-front/src/modules/object-record/record-calendar/month/components/__stories__/RecordCalendarMonth.stories.tsx index e72b71a152..2212a551b5 100644 --- a/packages/twenty-front/src/modules/object-record/record-calendar/month/components/__stories__/RecordCalendarMonth.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-calendar/month/components/__stories__/RecordCalendarMonth.stories.tsx @@ -26,7 +26,7 @@ import { IconsProviderDecorator } from '~/testing/decorators/IconsProviderDecora import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; import { mockedViews } from '~/testing/mock-data/generated/metadata/views/mock-views-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { setTestViewsInMetadataStore } from '~/testing/utils/setTestViewsInMetadataStore'; const meta: Meta = { @@ -34,9 +34,10 @@ const meta: Meta = { component: RecordCalendarMonth, decorators: [ (Story) => { - const companyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === CoreObjectNameSingular.Company, - )!; + const companyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === CoreObjectNameSingular.Company, + )!; const instanceId = companyObjectMetadataItem.id; const setCurrentRecordFields = useSetAtomComponentState( diff --git a/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListCellEditModePortal.tsx b/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListCellEditModePortal.tsx index 96668e8602..7839b64921 100644 --- a/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListCellEditModePortal.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListCellEditModePortal.tsx @@ -1,6 +1,6 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordFieldListInputContextProvider } from '@/object-record/record-field-list/anchored-portal/components/RecordFieldListInputContextProvider'; import { useFieldListFieldMetadataFromPosition } from '@/object-record/record-field-list/hooks/useFieldListFieldMetadataFromPosition'; import { RecordFieldListComponentInstanceContext } from '@/object-record/record-field-list/states/contexts/RecordFieldListComponentInstanceContext'; @@ -12,7 +12,7 @@ import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/com import { isDefined } from 'twenty-shared/utils'; type RecordFieldListCellEditModePortalProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordId: string; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListCellHoveredPortal.tsx b/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListCellHoveredPortal.tsx index 37e472c6a2..d28de049d4 100644 --- a/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListCellHoveredPortal.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListCellHoveredPortal.tsx @@ -1,6 +1,6 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordFieldListCellHoveredPortalContent } from '@/object-record/record-field-list/anchored-portal/components/RecordFieldListCellHoveredPortalContent'; import { RecordFieldListInputContextProvider } from '@/object-record/record-field-list/anchored-portal/components/RecordFieldListInputContextProvider'; import { useFieldListFieldMetadataFromPosition } from '@/object-record/record-field-list/hooks/useFieldListFieldMetadataFromPosition'; @@ -11,7 +11,7 @@ import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/com import { isDefined } from 'twenty-shared/utils'; type RecordFieldListCellHoveredPortalProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordId: string; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListInputContextProvider.tsx b/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListInputContextProvider.tsx index a3ac417436..00433f5910 100644 --- a/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListInputContextProvider.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field-list/anchored-portal/components/RecordFieldListInputContextProvider.tsx @@ -2,7 +2,7 @@ import { usePersistFieldFromFieldInputContext } from '@/object-record/record-fie import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/ui/states/contexts/RecordFieldComponentInstanceContext'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { formatFieldMetadataItemAsFieldDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition'; import { recordFieldListCellEditModePositionComponentState } from '@/object-record/record-field-list/states/recordFieldListCellEditModePositionComponentState'; import { @@ -21,7 +21,7 @@ type RecordFieldListInputContextProviderProps = { children: React.ReactNode; recordId: string; fieldMetadataItem: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; instanceIdPrefix: string; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field-list/record-detail-section/relation/components/__stories__/RecordDetailRelationSection.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field-list/record-detail-section/relation/components/__stories__/RecordDetailRelationSection.stories.tsx index 3e6b10aceb..93d03139db 100644 --- a/packages/twenty-front/src/modules/object-record/record-field-list/record-detail-section/relation/components/__stories__/RecordDetailRelationSection.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field-list/record-detail-section/relation/components/__stories__/RecordDetailRelationSection.stories.tsx @@ -17,11 +17,12 @@ import { SidePanelDecorator } from '~/testing/decorators/SidePanelDecorator'; import { mockedCompanyRecords } from '~/testing/mock-data/generated/data/companies/mock-companies-data'; import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode'; import { mockedPersonRecords } from '~/testing/mock-data/generated/data/people/mock-people-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); if (!mockedCompanyObjectMetadataItem) { throw new Error('Company object metadata item not found'); diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/useRelevantRecordsGqlFields.ts b/packages/twenty-front/src/modules/object-record/record-field/hooks/useRelevantRecordsGqlFields.ts index 0fd55cbe25..77efc371f8 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/useRelevantRecordsGqlFields.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/useRelevantRecordsGqlFields.ts @@ -1,5 +1,5 @@ import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getImageIdentifierFieldMetadataItem } from '@/object-metadata/utils/getImageIdentifierFieldMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { hasObjectMetadataItemPositionField } from '@/object-metadata/utils/hasObjectMetadataItemPositionField'; @@ -16,7 +16,7 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use import { filterDuplicatesById, isDefined } from 'twenty-shared/utils'; type UseRecordsUsefulGqlFields = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; additionalFieldMetadataId?: string | null; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/states/visibleRecordFieldsComponentSelector.ts b/packages/twenty-front/src/modules/object-record/record-field/states/visibleRecordFieldsComponentSelector.ts index 7c5a7a6052..5effe44f30 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/states/visibleRecordFieldsComponentSelector.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/states/visibleRecordFieldsComponentSelector.ts @@ -1,5 +1,5 @@ import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isActiveFieldMetadataItem } from '@/object-metadata/utils/isActiveFieldMetadataItem'; import { RecordFieldsComponentInstanceContext } from '@/object-record/record-field/states/context/RecordFieldsComponentInstanceContext'; import { currentRecordFieldsComponentState } from '@/object-record/record-field/states/currentRecordFieldsComponentState'; @@ -32,7 +32,7 @@ export const visibleRecordFieldsComponentSelector = createAtomComponentSelector< const filterVisibleAndReadableRecordFields = ( currentRecordFields: RecordField[], - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ): RecordField[] => { const filteredVisibleAndReadableRecordFields = currentRecordFields.filter( (recordFieldToFilter) => { diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/__mocks__/fieldDefinitions.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/__mocks__/fieldDefinitions.ts index 631257df0a..e9136635f8 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/__mocks__/fieldDefinitions.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/__mocks__/fieldDefinitions.ts @@ -11,7 +11,7 @@ import { FieldTextMetadata, } from '@/object-record/record-field/ui/types/FieldMetadata'; import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; export const fieldMetadataId = 'fieldMetadataId'; @@ -24,9 +24,10 @@ export const textfieldDefinition: FieldDefinition = { metadata: { placeHolder: 'John Doe', fieldName: 'userName' }, }; -const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find( - ({ nameSingular }) => nameSingular === 'person', -); +const mockedPersonObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + ({ nameSingular }) => nameSingular === 'person', + ); if (!mockedPersonObjectMetadataItem) { throw new Error('Person object metadata item not found'); @@ -87,9 +88,10 @@ export const ratingFieldDefinition: FieldDefinition = { }, }; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); if (!mockedCompanyObjectMetadataItem) { throw new Error('Company object metadata item not found'); diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/__tests__/useToggleEditOnlyInput.test.tsx b/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/__tests__/useToggleEditOnlyInput.test.tsx index 0ec2be699f..97e96ad620 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/__tests__/useToggleEditOnlyInput.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/__tests__/useToggleEditOnlyInput.test.tsx @@ -14,7 +14,7 @@ import { import { useToggleEditOnlyInput } from '@/object-record/record-field/ui/hooks/useToggleEditOnlyInput'; import { generateMockRecordNode } from '~/testing/utils/generateMockRecordNode'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; const recordId = 'recordId'; @@ -22,7 +22,7 @@ const recordId = 'recordId'; const companyObjectMetadataItem = getMockObjectMetadataItemOrThrow('company'); const updateOneCompanyMutation = generateUpdateOneRecordMutation({ objectMetadataItem: companyObjectMetadataItem, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), computeReferences: false, objectPermissionsByObjectMetadataId: {}, }); diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/display/components/__stories__/perf/ChipFieldDisplay.perf.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/display/components/__stories__/perf/ChipFieldDisplay.perf.stories.tsx index b7d3aeefba..49b760a441 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/display/components/__stories__/perf/ChipFieldDisplay.perf.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/display/components/__stories__/perf/ChipFieldDisplay.perf.stories.tsx @@ -12,7 +12,7 @@ import { ContextStoreDecorator } from '~/testing/decorators/ContextStoreDecorato import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorator'; import { getFieldDecorator } from '~/testing/decorators/getFieldDecorator'; import { getProfilingStory } from '~/testing/profiling/utils/getProfilingStory'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const meta: Meta = { title: 'UI/Data/Field/Display/ChipFieldDisplay', @@ -21,9 +21,10 @@ const meta: Meta = { (Story) => { const instanceId = 'child-field-display-scope'; - const companyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === CoreObjectNameSingular.Company, - )!; + const companyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === CoreObjectNameSingular.Company, + )!; const { fieldDefinitionByFieldMetadataItemId, diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useAddNewRecordAndOpenSidePanel.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useAddNewRecordAndOpenSidePanel.ts index 2ce7e9b60a..72f648e2fb 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useAddNewRecordAndOpenSidePanel.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useAddNewRecordAndOpenSidePanel.ts @@ -4,7 +4,7 @@ import { SEARCH_QUERY } from '@/command-menu/graphql/queries/search'; import { useOpenRecordInSidePanel } from '@/side-panel/hooks/useOpenRecordInSidePanel'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord'; import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord'; @@ -18,9 +18,9 @@ import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql'; type useAddNewRecordAndOpenSidePanelProps = { fieldMetadataItem: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; relationObjectMetadataNameSingular: string; - relationObjectMetadataItem: ObjectMetadataItem; + relationObjectMetadataItem: EnrichedObjectMetadataItem; relationFieldMetadataItem: FieldMetadataItem; recordId: string; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/utils/buildMorphRelationUpdateInput.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/utils/buildMorphRelationUpdateInput.ts index 88c7d51a6b..65d75d209b 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/utils/buildMorphRelationUpdateInput.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/utils/buildMorphRelationUpdateInput.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItemRelation } from '@/object-metadata/types/FieldMetadataItemRelation'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { buildRecordWithAllMorphObjectIdsToNull } from '@/object-record/record-field/ui/meta-types/input/utils/buildRecordWithAllMorphObjectIdsToNull'; import { type RelationType } from 'twenty-shared/types'; import { computeMorphRelationFieldName } from 'twenty-shared/utils'; @@ -15,7 +15,7 @@ export const buildMorphRelationUpdateInput = ({ morphRelations: FieldMetadataItemRelation[]; fieldName: string; relationType: RelationType; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; targetRecordId?: string; targetObjectMetadataId?: string; }): { diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/__tests__/extractTargetRecordsFromJunction.test.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/__tests__/extractTargetRecordsFromJunction.test.ts index 31325e87e3..f264e56bfb 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/__tests__/extractTargetRecordsFromJunction.test.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/__tests__/extractTargetRecordsFromJunction.test.ts @@ -1,6 +1,6 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { type FieldMetadataItemRelation } from '@/object-metadata/types/FieldMetadataItemRelation'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { extractTargetRecordsFromJunction } from '@/object-record/record-field/ui/utils/junction/extractTargetRecordsFromJunction'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { FieldMetadataType } from 'twenty-shared/types'; @@ -30,17 +30,17 @@ const createMockRelation = ( }, }); -const mockObjectMetadataItems: ObjectMetadataItem[] = [ +const mockObjectMetadataItems: EnrichedObjectMetadataItem[] = [ { id: 'company-metadata-id', nameSingular: 'company', namePlural: 'companies', - } as ObjectMetadataItem, + } as EnrichedObjectMetadataItem, { id: 'person-metadata-id', nameSingular: 'person', namePlural: 'people', - } as ObjectMetadataItem, + } as EnrichedObjectMetadataItem, ]; const mockTargetField: FieldMetadataItem = { diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/__tests__/getJunctionConfig.test.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/__tests__/getJunctionConfig.test.ts index 9e084eb4be..da2f3d70f5 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/__tests__/getJunctionConfig.test.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/__tests__/getJunctionConfig.test.ts @@ -1,6 +1,6 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { type FieldMetadataItemRelation } from '@/object-metadata/types/FieldMetadataItemRelation'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getJunctionConfig } from '@/object-record/record-field/ui/utils/junction/getJunctionConfig'; import { FieldMetadataType } from 'twenty-shared/types'; import { RelationType } from '~/generated-metadata/graphql'; @@ -40,15 +40,15 @@ const createMockField = ( }) as FieldMetadataItem; const createMockObjectMetadata = ( - overrides: Partial, -): ObjectMetadataItem => + overrides: Partial, +): EnrichedObjectMetadataItem => ({ id: 'default-object-id', nameSingular: 'defaultObject', namePlural: 'defaultObjects', fields: [], ...overrides, - }) as ObjectMetadataItem; + }) as EnrichedObjectMetadataItem; describe('getJunctionConfig', () => { describe('basic scenarios', () => { diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/extractTargetRecordsFromJunction.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/extractTargetRecordsFromJunction.ts index e5bc06e271..b8c1d72e92 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/extractTargetRecordsFromJunction.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/extractTargetRecordsFromJunction.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isObjectWithId } from '@/object-record/record-field/ui/utils/junction/isObjectWithId'; import { type ExtractedTargetRecord } from '@/object-record/record-field/ui/utils/junction/types/ExtractedTargetRecord'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; @@ -9,7 +9,7 @@ import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; type ExtractTargetRecordsFromJunctionArgs = { junctionRecords: ObjectRecord[] | undefined | null; targetFields: FieldMetadataItem[]; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; includeRecord?: boolean; }; @@ -35,7 +35,7 @@ const tryExtractFromField = ( const extractFromTargetFields = ( junctionRecord: ObjectRecord, targetFields: FieldMetadataItem[], - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], includeRecord: boolean, ): ExtractedTargetRecord | null => { for (const targetField of targetFields) { @@ -75,7 +75,7 @@ const extractFromTargetFields = ( const extractFromMorphRelationField = ( junctionRecord: ObjectRecord, targetField: FieldMetadataItem, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], includeRecord: boolean, ): ExtractedTargetRecord | null => { const morphRelations = targetField.morphRelations; diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/findTargetFieldInfo.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/findTargetFieldInfo.ts index f172741920..4190ed7068 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/findTargetFieldInfo.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/findTargetFieldInfo.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getJoinColumnName } from '@/object-record/record-field/ui/utils/junction/getJoinColumnName'; import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; @@ -11,7 +11,7 @@ export type TargetFieldInfo = { const findMorphTargetFieldInfo = ( field: FieldMetadataItem, targetObjectMetadataId: string, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ): TargetFieldInfo | undefined => { if (!isDefined(field.morphRelations) || field.morphRelations.length === 0) { return undefined; @@ -52,7 +52,7 @@ const findMorphTargetFieldInfo = ( export const findTargetFieldInfo = ( targetFields: FieldMetadataItem[], targetObjectMetadataId: string, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ): TargetFieldInfo | undefined => { for (const field of targetFields) { const morphResult = findMorphTargetFieldInfo( diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getJunctionConfig.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getJunctionConfig.ts index fb503259c9..a043d6d0ee 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getJunctionConfig.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getJunctionConfig.ts @@ -1,11 +1,11 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { hasJunctionTargetFieldId } from './hasJunctionTargetFieldId'; export type JunctionObjectMetadataItem = Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, | 'id' | 'fields' | 'labelIdentifierFieldMetadataId' diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getSearchableObjectMetadataItems.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getSearchableObjectMetadataItems.ts index 9d5436b2ca..d5639c39ff 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getSearchableObjectMetadataItems.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getSearchableObjectMetadataItems.ts @@ -1,12 +1,12 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getTargetObjectMetadataIdsFromField } from './getTargetObjectMetadataIdsFromField'; import { isDefined } from 'twenty-shared/utils'; export const getSearchableObjectMetadataItems = ( targetFields: FieldMetadataItem[], - objectMetadataItems: ObjectMetadataItem[], -): ObjectMetadataItem[] => { + objectMetadataItems: EnrichedObjectMetadataItem[], +): EnrichedObjectMetadataItem[] => { const targetObjectIds = targetFields.flatMap( getTargetObjectMetadataIdsFromField, ); diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getSourceJoinColumnName.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getSourceJoinColumnName.ts index a6c6dc910f..ca54d3f779 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getSourceJoinColumnName.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/utils/junction/getSourceJoinColumnName.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getJoinColumnName } from '@/object-record/record-field/ui/utils/junction/getJoinColumnName'; import { FieldMetadataType } from 'twenty-shared/types'; import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; @@ -7,7 +7,7 @@ import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; type GetSourceJoinColumnNameArgs = { sourceField: Pick; sourceObjectMetadata: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'id' | 'nameSingular' | 'namePlural' >; }; diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/isRecordMatchingFilter.test.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/isRecordMatchingFilter.test.ts index 53d804ec56..14f342b251 100644 --- a/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/isRecordMatchingFilter.test.ts +++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/isRecordMatchingFilter.test.ts @@ -1,6 +1,6 @@ import { type RecordGqlOperationFilter } from 'twenty-shared/types'; import { mockedCompanyRecords } from '~/testing/mock-data/generated/data/companies/mock-companies-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { type Company } from '@/companies/types/Company'; import { getCompanyDomainName } from '@/object-metadata/utils/getCompanyDomainName'; @@ -11,9 +11,10 @@ const companiesMock = mockedCompanyRecords.map((record) => getRecordFromRecordNode({ recordNode: record }), ); -const companyMockObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -)!; +const companyMockObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + )!; describe('isRecordMatchingFilter', () => { describe('Empty Filters', () => { diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/getRecordFilterFieldMetadataItem.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/getRecordFilterFieldMetadataItem.ts index 4757fb6d9d..03a554c651 100644 --- a/packages/twenty-front/src/modules/object-record/record-filter/utils/getRecordFilterFieldMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/getRecordFilterFieldMetadataItem.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { isDefined } from 'twenty-shared/utils'; @@ -7,7 +7,7 @@ export const getRecordFilterFieldMetadataItem = ({ objectMetadataItems, }: { recordFilter: RecordFilter; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; }) => { const allFieldMetadataItems = objectMetadataItems.flatMap( (objectMetadataItem) => objectMetadataItem.fields, diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterAboutSoftDelete.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterAboutSoftDelete.ts index b7151e7e78..0d567aa86d 100644 --- a/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterAboutSoftDelete.ts +++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterAboutSoftDelete.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SOFT_DELETE_FILTER_FIELD_NAME } from '@/object-record/record-filter/constants/SoftDeleteFilterFieldName'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { RecordFilterOperand } from '@/object-record/record-filter/types/RecordFilterOperand'; @@ -10,7 +10,7 @@ export const isRecordFilterAboutSoftDelete = ({ objectMetadataItems, }: { recordFilter: RecordFilter; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; }) => { const foundFieldMetadataItem = getRecordFilterFieldMetadataItem({ recordFilter, diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordMatchingFilter.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordMatchingFilter.ts index 8ad64057ed..f992ad995d 100644 --- a/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordMatchingFilter.ts +++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordMatchingFilter.ts @@ -48,7 +48,7 @@ import { } from 'twenty-shared/utils'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { computePossibleMorphGqlFieldForFieldName } from '@/object-record/cache/utils/computePossibleMorphGqlFieldForFieldName'; const isLeafFilter = ( @@ -100,7 +100,7 @@ export const isRecordMatchingFilter = ({ }: { record: any; filter: RecordGqlOperationFilter; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }): boolean => { if (Object.keys(filter).length === 0 && record.deletedAt === null) { return true; diff --git a/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroups.ts b/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroups.ts index 0e592c43d1..cd051b54cd 100644 --- a/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroups.ts +++ b/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroups.ts @@ -1,7 +1,7 @@ import { useStore } from 'jotai'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { recordGroupDefinitionFamilyState } from '@/object-record/record-group/states/recordGroupDefinitionFamilyState'; import { recordGroupIdsComponentState } from '@/object-record/record-group/states/recordGroupIdsComponentState'; import { type RecordGroupDefinition } from '@/object-record/record-group/types/RecordGroupDefinition'; @@ -114,7 +114,7 @@ export const useSetRecordGroups = () => { viewId: string; mainGroupByFieldMetadataId: string; viewGroups: ViewGroup[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const recordIndexId = getRecordIndexIdFromObjectNamePluralAndViewId( objectMetadataItem.namePlural, diff --git a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeaderIcon.tsx b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeaderIcon.tsx index 12f89e4f9f..2b89f6ae73 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeaderIcon.tsx +++ b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeaderIcon.tsx @@ -2,14 +2,14 @@ import { isNonEmptyString } from '@sniptt/guards'; import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; import { useIcons } from 'twenty-ui/display'; export const RecordIndexPageHeaderIcon = ({ objectMetadataItem, }: { - objectMetadataItem?: ObjectMetadataItem; + objectMetadataItem?: EnrichedObjectMetadataItem; }) => { const { getIcon } = useIcons(); const ObjectIcon = getIcon(objectMetadataItem?.icon); diff --git a/packages/twenty-front/src/modules/object-record/record-index/contexts/RecordIndexContext.ts b/packages/twenty-front/src/modules/object-record/record-index/contexts/RecordIndexContext.ts index da480bd6ec..2995e533e3 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/contexts/RecordIndexContext.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/contexts/RecordIndexContext.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordField } from '@/object-record/record-field/types/RecordField'; import { type FieldMetadata } from '@/object-record/record-field/ui/types/FieldMetadata'; import { type ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition'; @@ -11,7 +11,7 @@ export type RecordIndexContextValue = { onIndexRecordsLoaded: () => void; objectNamePlural: string; objectNameSingular: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; objectPermissionsByObjectMetadataId: Record< string, ObjectPermissions & { objectMetadataId: string } diff --git a/packages/twenty-front/src/modules/object-record/record-index/export/hooks/__tests__/useRecordIndexLazyFetchRecords.test.ts b/packages/twenty-front/src/modules/object-record/record-index/export/hooks/__tests__/useRecordIndexLazyFetchRecords.test.ts index d811aca0f4..132c2d48ad 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/export/hooks/__tests__/useRecordIndexLazyFetchRecords.test.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/export/hooks/__tests__/useRecordIndexLazyFetchRecords.test.ts @@ -9,7 +9,7 @@ import { import { useLazyFetchAllRecords } from '@/object-record/hooks/useLazyFetchAllRecords'; import { ViewType } from '@/views/types/ViewType'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const mockPerson = { __typename: 'Person', @@ -77,7 +77,7 @@ jest.mock('@/object-record/hooks/useLazyFetchAllRecords', () => ({ describe('useRecordData', () => { const recordIndexId = 'people'; - const objectMetadataItem = generatedMockObjectMetadataItems.find( + const objectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'person', ); let mockFetchAllRecords: jest.Mock; diff --git a/packages/twenty-front/src/modules/object-record/record-index/export/hooks/useRecordIndexLazyFetchRecords.ts b/packages/twenty-front/src/modules/object-record/record-index/export/hooks/useRecordIndexLazyFetchRecords.ts index ccf68222c7..0462e85716 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/export/hooks/useRecordIndexLazyFetchRecords.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/export/hooks/useRecordIndexLazyFetchRecords.ts @@ -7,7 +7,7 @@ import { contextStoreFilterGroupsComponentState } from '@/context-store/states/c import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; import { computeContextStoreFilters } from '@/context-store/utils/computeContextStoreFilters'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useLazyFetchAllRecords } from '@/object-record/hooks/useLazyFetchAllRecords'; import { EXPORT_TABLE_DATA_DEFAULT_PAGE_SIZE } from '@/object-record/object-options-dropdown/constants/ExportTableDataDefaultPageSize'; import { useObjectOptionsForBoard } from '@/object-record/object-options-dropdown/hooks/useObjectOptionsForBoard'; @@ -31,7 +31,7 @@ export const percentage = (part: number, whole: number): number => { export type UseRecordDataOptions = { delayMs: number; maximumRequests?: number; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; pageSize?: number; recordIndexId: string; callback: ( diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useAggregateGqlFieldsFromRecordIndexGroupAggregates.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useAggregateGqlFieldsFromRecordIndexGroupAggregates.ts index 271d187f88..fe5e6c9d39 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useAggregateGqlFieldsFromRecordIndexGroupAggregates.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useAggregateGqlFieldsFromRecordIndexGroupAggregates.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ExtendedAggregateOperations } from '@/object-record/record-table/types/ExtendedAggregateOperations'; import { getAvailableAggregationsFromObjectFields } from '@/object-record/utils/getAvailableAggregationsFromObjectFields'; import { useMemo } from 'react'; @@ -12,7 +12,7 @@ export const useAggregateGqlFieldsFromRecordIndexGroupAggregates = ({ recordIndexGroupAggregateFieldMetadataItem, recordIndexGroupAggregateOperation, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordIndexGroupAggregateFieldMetadataItem: Nullable; recordIndexGroupAggregateOperation: ExtendedAggregateOperations; }) => { diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleIndexIdentifierClick.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleIndexIdentifierClick.ts index a13f1ef981..b3d2d87cff 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleIndexIdentifierClick.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleIndexIdentifierClick.ts @@ -1,5 +1,5 @@ import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { AppPath } from 'twenty-shared/types'; import { getAppPath } from 'twenty-shared/utils'; @@ -7,7 +7,7 @@ import { getAppPath } from 'twenty-shared/utils'; export const useHandleIndexIdentifierClick = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const contextStoreCurrentViewId = useAtomComponentStateValue( contextStoreCurrentViewIdComponentState, diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useLoadRecordIndexStates.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useLoadRecordIndexStates.ts index 897b42b7f6..143f720eb7 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useLoadRecordIndexStates.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useLoadRecordIndexStates.ts @@ -2,7 +2,7 @@ import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/s import { useGetFieldMetadataItemByIdOrThrow } from '@/object-metadata/hooks/useGetFieldMetadataItemById'; import { availableFieldMetadataItemsForFilterFamilySelector } from '@/object-metadata/states/availableFieldMetadataItemsForFilterFamilySelector'; import { availableFieldMetadataItemsForSortFamilySelector } from '@/object-metadata/states/availableFieldMetadataItemsForSortFamilySelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { currentRecordFieldsComponentState } from '@/object-record/record-field/states/currentRecordFieldsComponentState'; @@ -72,7 +72,7 @@ export const useLoadRecordIndexStates = () => { const { setRecordGroupsFromViewGroups } = useSetRecordGroups(); const loadRecordIndexStates = useCallback( - (view: View, objectMetadataItem: ObjectMetadataItem) => { + (view: View, objectMetadataItem: EnrichedObjectMetadataItem) => { const activeFieldMetadataItems = objectMetadataItem.fields.filter( (field) => field.isActive && !isHiddenSystemField(field), ); diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexFieldMetadataDerivedStates.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexFieldMetadataDerivedStates.ts index 0c953cbc54..743917f8c8 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexFieldMetadataDerivedStates.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexFieldMetadataDerivedStates.ts @@ -1,5 +1,5 @@ import { labelIdentifierFieldMetadataItemSelector } from '@/object-metadata/states/labelIdentifierFieldMetadataItemSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition'; import { currentRecordFieldsComponentState } from '@/object-record/record-field/states/currentRecordFieldsComponentState'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; @@ -7,7 +7,7 @@ import { useAtomFamilySelectorValue } from '@/ui/utilities/state/jotai/hooks/use import { isDefined } from 'twenty-shared/utils'; export const useRecordIndexFieldMetadataDerivedStates = ( - objectMetadataItem: ObjectMetadataItem | undefined, + objectMetadataItem: EnrichedObjectMetadataItem | undefined, recordIndexId?: string | undefined, ) => { const fieldMetadataItems = objectMetadataItem?.fields ?? []; diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexGroupsAggregatesGroupBy.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexGroupsAggregatesGroupBy.ts index a3980e6525..d07f44ac42 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexGroupsAggregatesGroupBy.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexGroupsAggregatesGroupBy.ts @@ -1,6 +1,6 @@ import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery'; import { useObjectPermissionsForObject } from '@/object-record/hooks/useObjectPermissionsForObject'; import { generateGroupByAggregateQuery } from '@/object-record/record-aggregate/utils/generateGroupByAggregateQuery'; @@ -29,7 +29,7 @@ export const useRecordIndexGroupsAggregatesGroupBy = ({ recordIndexGroupAggregateOperation, }: { skip?: boolean; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; groupByFieldMetadataItem: FieldMetadataItem; recordIndexGroupAggregateFieldMetadataItem: Nullable; recordIndexGroupAggregateOperation: ExtendedAggregateOperations; diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexGroupsRecordsLazyGroupBy.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexGroupsRecordsLazyGroupBy.ts index 3b2fcd5346..87b5692cc7 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexGroupsRecordsLazyGroupBy.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useRecordIndexGroupsRecordsLazyGroupBy.ts @@ -1,7 +1,7 @@ import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlEdge } from '@/object-record/graphql/types/RecordGqlEdge'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { generateGroupsRecordsGroupByQuery } from '@/object-record/record-aggregate/utils/generateGroupsRecordsGroupByQuery'; @@ -26,7 +26,7 @@ export const useRecordIndexGroupsRecordsLazyGroupBy = ({ objectMetadataItem, groupByFieldMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; groupByFieldMetadataItem: Nullable; }) => { const { objectMetadataItems } = useObjectMetadataItems(); diff --git a/packages/twenty-front/src/modules/object-record/record-index/utils/turnRecordIndexGroupByAggregateQueryResultIntoRecordAggregateValueByGroupValue.ts b/packages/twenty-front/src/modules/object-record/record-index/utils/turnRecordIndexGroupByAggregateQueryResultIntoRecordAggregateValueByGroupValue.ts index 4e81c3e495..3a0b67eea4 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/utils/turnRecordIndexGroupByAggregateQueryResultIntoRecordAggregateValueByGroupValue.ts +++ b/packages/twenty-front/src/modules/object-record/record-index/utils/turnRecordIndexGroupByAggregateQueryResultIntoRecordAggregateValueByGroupValue.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordAggregateValueByRecordGroupValue } from '@/object-record/record-index/types/RecordAggregateValueByRecordGroupValue'; import { type RecordIndexGroupByQueryResult } from '@/object-record/record-index/types/RecordIndexGroupByQueryResult'; import { getGroupByQueryResultGqlFieldName } from '@/page-layout/utils/getGroupByQueryResultGqlFieldName'; @@ -7,7 +7,7 @@ type TurnRecordIndexGroupByAggregateQueryResultIntoRecordAggregateValueByGroupVa { queryResult: RecordIndexGroupByQueryResult; recordAggregateGqlField: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const turnRecordIndexGroupByAggregateQueryResultIntoRecordAggregateValueByGroupValue = diff --git a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellAnchoredPortal.tsx b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellAnchoredPortal.tsx index fc9b03db19..ed99d089d8 100644 --- a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellAnchoredPortal.tsx +++ b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellAnchoredPortal.tsx @@ -1,6 +1,6 @@ import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord'; @@ -32,7 +32,7 @@ type RecordInlineCellAnchoredPortalProps = { | 'settings' | 'relation' >; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordId: string; instanceIdPrefix: string; children: React.ReactNode; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/components/MultipleRecordPickerMenuItemContent.tsx b/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/components/MultipleRecordPickerMenuItemContent.tsx index da9e6a91fc..bd4cb168b1 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/components/MultipleRecordPickerMenuItemContent.tsx +++ b/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/components/MultipleRecordPickerMenuItemContent.tsx @@ -1,6 +1,6 @@ import { t } from '@lingui/core/macro'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getAvatarType } from '@/object-metadata/utils/getAvatarType'; import { MultipleRecordPickerComponentInstanceContext } from '@/object-record/record-picker/multiple-record-picker/states/contexts/MultipleRecordPickerComponentInstanceContext'; import { multipleRecordPickerIsSelectedComponentFamilySelector } from '@/object-record/record-picker/multiple-record-picker/states/selectors/multipleRecordPickerIsSelectedComponentFamilySelector'; @@ -21,7 +21,7 @@ import { type SearchRecord } from '~/generated/graphql'; type MultipleRecordPickerMenuItemContentProps = { searchRecord: SearchRecord; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; onChange: (morphItem: RecordPickerPickableMorphItem) => void; }; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/hooks/useMultipleRecordPickerPerformSearch.ts b/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/hooks/useMultipleRecordPickerPerformSearch.ts index 145aafcf58..6c531efad5 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/hooks/useMultipleRecordPickerPerformSearch.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/hooks/useMultipleRecordPickerPerformSearch.ts @@ -1,6 +1,6 @@ import { SEARCH_QUERY } from '@/command-menu/graphql/queries/search'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { usePerformCombinedFindManyRecords } from '@/object-record/multiple-objects/hooks/usePerformCombinedFindManyRecords'; import { multipleRecordPickerIsLoadingComponentState } from '@/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerIsLoadingComponentState'; @@ -40,7 +40,7 @@ export const useMultipleRecordPickerPerformSearch = () => { }: { multipleRecordPickerInstanceId: string; forceSearchFilter?: string; - forceSearchableObjectMetadataItems?: ObjectMetadataItem[]; + forceSearchableObjectMetadataItems?: EnrichedObjectMetadataItem[]; forcePickableMorphItems?: RecordPickerPickableMorphItem[]; loadMore?: boolean; }) => { @@ -382,7 +382,7 @@ const performSearchQueries = async ({ }: { client: ApolloClient; searchFilter: string; - searchableObjectMetadataItems: ObjectMetadataItem[]; + searchableObjectMetadataItems: EnrichedObjectMetadataItem[]; pickedRecordIds: string[]; limit?: number; after?: string | null; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerSearchableObjectMetadataItemsComponentState.ts b/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerSearchableObjectMetadataItemsComponentState.ts index 74cc55d055..d6e72ff652 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerSearchableObjectMetadataItemsComponentState.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerSearchableObjectMetadataItemsComponentState.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { MultipleRecordPickerComponentInstanceContext } from '@/object-record/record-picker/multiple-record-picker/states/contexts/MultipleRecordPickerComponentInstanceContext'; import { createAtomComponentState } from '@/ui/utilities/state/jotai/utils/createAtomComponentState'; export const multipleRecordPickerSearchableObjectMetadataItemsComponentState = - createAtomComponentState({ + createAtomComponentState({ key: 'multipleRecordPickerSearchableObjectMetadataItemsComponentState', defaultValue: [], componentInstanceContext: MultipleRecordPickerComponentInstanceContext, diff --git a/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/utils/multipleRecordPickerformatQueryResultAsRecordWithObjectMetadataId.ts b/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/utils/multipleRecordPickerformatQueryResultAsRecordWithObjectMetadataId.ts index 329abfb3dd..b8b308462c 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/utils/multipleRecordPickerformatQueryResultAsRecordWithObjectMetadataId.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker/multiple-record-picker/utils/multipleRecordPickerformatQueryResultAsRecordWithObjectMetadataId.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type CombinedFindManyRecordsQueryResult } from '@/object-record/multiple-objects/types/CombinedFindManyRecordsQueryResult'; import { multiRecordPickerFormatSearchResults } from '@/object-record/record-picker/multiple-record-picker/utils/multiRecordPickerFormatSearchResults'; import { isDefined } from 'twenty-shared/utils'; @@ -8,7 +8,7 @@ export const multipleRecordPickerformatQueryResultAsRecordsWithObjectMetadataId objectMetadataItems, searchQueryResult, }: { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; searchQueryResult: CombinedFindManyRecordsQueryResult; }) => { const formattedSearchQueryResult = diff --git a/packages/twenty-front/src/modules/object-record/record-picker/single-record-picker/states/singleRecordPickerSearchableObjectMetadataItemsComponentState.ts b/packages/twenty-front/src/modules/object-record/record-picker/single-record-picker/states/singleRecordPickerSearchableObjectMetadataItemsComponentState.ts index 9e2260d6d2..44dc77ab7f 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/single-record-picker/states/singleRecordPickerSearchableObjectMetadataItemsComponentState.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker/single-record-picker/states/singleRecordPickerSearchableObjectMetadataItemsComponentState.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SingleRecordPickerComponentInstanceContext } from '@/object-record/record-picker/single-record-picker/states/contexts/SingleRecordPickerComponentInstanceContext'; import { createAtomComponentState } from '@/ui/utilities/state/jotai/utils/createAtomComponentState'; export const singleRecordPickerSearchableObjectMetadataItemsComponentState = - createAtomComponentState({ + createAtomComponentState({ key: 'singleRecordPickerSearchableObjectMetadataItemsComponentState', defaultValue: [], componentInstanceContext: SingleRecordPickerComponentInstanceContext, diff --git a/packages/twenty-front/src/modules/object-record/record-show/graphql/operations/factories/findOneRecordForShowPageOperationSignatureFactory.ts b/packages/twenty-front/src/modules/object-record/record-show/graphql/operations/factories/findOneRecordForShowPageOperationSignatureFactory.ts index c51015d5a1..c66ef4c1a5 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/graphql/operations/factories/findOneRecordForShowPageOperationSignatureFactory.ts +++ b/packages/twenty-front/src/modules/object-record/record-show/graphql/operations/factories/findOneRecordForShowPageOperationSignatureFactory.ts @@ -1,12 +1,12 @@ import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateActivityTargetGqlFields } from '@/object-record/graphql/record-gql-fields/utils/generateActivityTargetGqlFields'; import { generateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject'; import { type RecordGqlOperationSignatureFactory } from '@/object-record/graphql/types/RecordGqlOperationSignatureFactory'; type FindOneRecordForShowPageOperationSignatureFactory = { - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; }; export const buildFindOneRecordForShowPageOperationSignature: RecordGqlOperationSignatureFactory< @@ -15,8 +15,8 @@ export const buildFindOneRecordForShowPageOperationSignature: RecordGqlOperation objectMetadataItem, objectMetadataItems, }: { - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; }) => ({ objectNameSingular: objectMetadataItem.nameSingular, variables: {}, diff --git a/packages/twenty-front/src/modules/object-record/record-show/hooks/useExportSingleRecord.ts b/packages/twenty-front/src/modules/object-record/record-show/hooks/useExportSingleRecord.ts index e311abeaff..8bd07a8a39 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/hooks/useExportSingleRecord.ts +++ b/packages/twenty-front/src/modules/object-record/record-show/hooks/useExportSingleRecord.ts @@ -1,6 +1,6 @@ import { useMemo } from 'react'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition'; import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; import { useExportProcessRecordsForCSV } from '@/object-record/object-options-dropdown/hooks/useExportProcessRecordsForCSV'; @@ -12,7 +12,7 @@ import { isDefined } from 'twenty-shared/utils'; export type UseSingleExportTableDataOptions = { filename: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordId: string; }; export const useExportSingleRecord = ({ diff --git a/packages/twenty-front/src/modules/object-record/record-table/components/__stories__/perf/RecordTableCell.perf.stories.tsx b/packages/twenty-front/src/modules/object-record/record-table/components/__stories__/perf/RecordTableCell.perf.stories.tsx index eca14501e5..cde6406e5a 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/components/__stories__/perf/RecordTableCell.perf.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/components/__stories__/perf/RecordTableCell.perf.stories.tsx @@ -2,7 +2,7 @@ import { type Meta, type StoryObj } from '@storybook/react-vite'; import { useEffect } from 'react'; import { useMetadataStore } from '@/metadata-store/hooks/useMetadataStore'; -import { splitObjectMetadataItemWithRelated } from '@/metadata-store/utils/splitObjectMetadataItemWithRelated'; +import { splitCompositeObjectMetadataItems } from '@/metadata-store/utils/splitCompositeObjectMetadataItems'; import { getBasePathToShowPage } from '@/object-metadata/utils/getBasePathToShowPage'; import { FieldContext } from '@/object-record/record-field/ui/contexts/FieldContext'; @@ -34,7 +34,7 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use import { useSetAtomComponentState } from '@/ui/utilities/state/jotai/hooks/useSetAtomComponentState'; import { ComponentDecorator } from 'twenty-ui/testing'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const RelationFieldValueSetterEffect = () => { const setRecordStore = useSetAtomFamilyState( @@ -72,7 +72,9 @@ const RelationFieldValueSetterEffect = () => { ); const { flatObjects, flatFields, flatIndexes } = - splitObjectMetadataItemWithRelated(generatedMockObjectMetadataItems); + splitCompositeObjectMetadataItems( + getTestEnrichedObjectMetadataItemsMock(), + ); replaceDraft('objectMetadataItems', flatObjects); replaceDraft('fieldMetadataItems', flatFields); diff --git a/packages/twenty-front/src/modules/object-record/record-table/contexts/RecordTableContext.ts b/packages/twenty-front/src/modules/object-record/record-table/contexts/RecordTableContext.ts index 8af4ceb5a2..f489e6298e 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/contexts/RecordTableContext.ts +++ b/packages/twenty-front/src/modules/object-record/record-table/contexts/RecordTableContext.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordField } from '@/object-record/record-field/types/RecordField'; import { type ObjectPermission } from '~/generated-metadata/graphql'; import { createRequiredContext } from '~/utils/createRequiredContext'; @@ -7,8 +7,8 @@ type RecordTableContextValue = { recordTableId: string; viewBarId: string; objectNameSingular: string; - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectPermissions: ObjectPermission; visibleRecordFields: RecordField[]; onRecordIdentifierClick?: (rowIndex: number, recordId: string) => void; diff --git a/packages/twenty-front/src/modules/object-record/record-table/hooks/useBuildRecordInputFromFilters.ts b/packages/twenty-front/src/modules/object-record/record-table/hooks/useBuildRecordInputFromFilters.ts index c652e0bee6..6807b731ed 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/hooks/useBuildRecordInputFromFilters.ts +++ b/packages/twenty-front/src/modules/object-record/record-table/hooks/useBuildRecordInputFromFilters.ts @@ -1,5 +1,5 @@ import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState'; import { buildRecordInputFromFilter } from '@/object-record/record-table/utils/buildRecordInputFromFilter'; @@ -11,7 +11,7 @@ export const useBuildRecordInputFromFilters = ({ objectMetadataItem, instanceId, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; instanceId?: string; }) => { const currentRecordFilters = useAtomComponentStateValue( diff --git a/packages/twenty-front/src/modules/object-record/record-table/hooks/useCreateNewIndexRecord.ts b/packages/twenty-front/src/modules/object-record/record-table/hooks/useCreateNewIndexRecord.ts index 5374185ceb..54c738dd9b 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/hooks/useCreateNewIndexRecord.ts +++ b/packages/twenty-front/src/modules/object-record/record-table/hooks/useCreateNewIndexRecord.ts @@ -1,6 +1,6 @@ import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu'; import { useOpenRecordInSidePanel } from '@/side-panel/hooks/useOpenRecordInSidePanel'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { useBuildRecordInputFromRLSPredicates } from '@/object-record/hooks/useBuildRecordInputFromRLSPredicates'; import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord'; @@ -24,7 +24,7 @@ import { v4 } from 'uuid'; import { useNavigateApp } from '~/hooks/useNavigateApp'; type UseCreateNewIndexRecordProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; instanceId?: string; }; diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellInGroup.test.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellInGroup.test.tsx index 703b5dd861..13def6632b 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellInGroup.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellInGroup.test.tsx @@ -21,14 +21,14 @@ import { recordTableCellEditModePositionComponentState } from '@/object-record/r import { useDragSelect } from '@/ui/utilities/drag-select/hooks/useDragSelect'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const recordTableId = 'record-table-id'; const Wrapper = ({ children }: { children: React.ReactNode }) => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); return ( diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellNoGroup.test.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellNoGroup.test.tsx index 44349b3631..fbbc45f194 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellNoGroup.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellNoGroup.test.tsx @@ -21,14 +21,14 @@ import { recordTableCellEditModePositionComponentState } from '@/object-record/r import { useDragSelect } from '@/ui/utilities/drag-select/hooks/useDragSelect'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const recordTableId = 'record-table-id'; const Wrapper = ({ children }: { children: React.ReactNode }) => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); return ( diff --git a/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.ts b/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.ts index 717d7637ab..a611c883cf 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.ts +++ b/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.ts @@ -1,5 +1,5 @@ import { type CurrentWorkspaceMember } from '@/auth/states/currentWorkspaceMemberState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { buildValueFromFilter } from '@/object-record/record-table/utils/buildValueFromFilter'; import { type ObjectRecord } from 'twenty-shared/types'; @@ -19,7 +19,7 @@ export const buildRecordInputFromFilter = ({ currentWorkspaceMember, }: { currentRecordFilters: RecordFilter[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; currentWorkspaceMember?: CurrentWorkspaceMember; }): Partial => { const recordInput: Partial = {}; diff --git a/packages/twenty-front/src/modules/object-record/record-table/utils/isRecordTableCreateDisabled.ts b/packages/twenty-front/src/modules/object-record/record-table/utils/isRecordTableCreateDisabled.ts index a9def77301..3fd3596984 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/utils/isRecordTableCreateDisabled.ts +++ b/packages/twenty-front/src/modules/object-record/record-table/utils/isRecordTableCreateDisabled.ts @@ -1,11 +1,14 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { CoreObjectNameSingular } from 'twenty-shared/types'; const OBJECTS_WITHOUT_MANUAL_RECORD_CREATION: readonly CoreObjectNameSingular[] = [CoreObjectNameSingular.WorkflowRun, CoreObjectNameSingular.WorkflowVersion]; export const isRecordTableCreateDisabled = ( - objectMetadataItem: Pick, + objectMetadataItem: Pick< + EnrichedObjectMetadataItem, + 'nameSingular' | 'isSystem' + >, ): boolean => { if (objectMetadataItem.isSystem) { return true; diff --git a/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/__tests__/useBuildSpreadSheetImportFields.test.tsx b/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/__tests__/useBuildSpreadSheetImportFields.test.tsx index 26bbf10e9b..fe967e1137 100644 --- a/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/__tests__/useBuildSpreadSheetImportFields.test.tsx +++ b/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/__tests__/useBuildSpreadSheetImportFields.test.tsx @@ -8,7 +8,7 @@ import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; import { setTestObjectMetadataItemsInMetadataStore } from '~/testing/utils/setTestObjectMetadataItemsInMetadataStore'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { type IndexMetadataItem } from '@/object-metadata/types/IndexMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useBuildSpreadsheetImportFields } from '@/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields'; import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql'; @@ -56,8 +56,8 @@ describe('useBuildSpreadSheetImportFields', () => { }); const createMockObjectMetadataItem = ( - overrides: Partial = {}, - ): ObjectMetadataItem => + overrides: Partial = {}, + ): EnrichedObjectMetadataItem => ({ id: 'test-object-id', universalIdentifier: 'test-object-id', @@ -77,7 +77,7 @@ describe('useBuildSpreadSheetImportFields', () => { updatedAt: '2023-01-01', fields: [], ...overrides, - }) as ObjectMetadataItem; + }) as EnrichedObjectMetadataItem; it('should build importFields for basic field types', () => { const { result } = renderHook(() => useBuildSpreadsheetImportFields(), { diff --git a/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields.ts b/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields.ts index d054a6c6d3..ec40839fa6 100644 --- a/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields.ts +++ b/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields.ts @@ -1,6 +1,6 @@ import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType'; import { getSpreadSheetFieldValidationDefinitions } from '@/object-record/spreadsheet-import/utils/getSpreadSheetFieldValidationDefinitions'; @@ -241,7 +241,7 @@ export const useBuildSpreadsheetImportFields = () => { if (isManyToOneRelation && isDefined(targetObjectMetadataItem)) { const uniqueConstraintFields = getUniqueConstraintsFields< FieldMetadataItem, - ObjectMetadataItem + EnrichedObjectMetadataItem >(targetObjectMetadataItem); //todo - update logic when composite unique indexes will be supported diff --git a/packages/twenty-front/src/modules/object-record/spreadsheet-import/utils/__tests__/spreadsheetImportGetUnicityTableHook.test.ts b/packages/twenty-front/src/modules/object-record/spreadsheet-import/utils/__tests__/spreadsheetImportGetUnicityTableHook.test.ts index 9fe72009ff..59e8ce61df 100644 --- a/packages/twenty-front/src/modules/object-record/spreadsheet-import/utils/__tests__/spreadsheetImportGetUnicityTableHook.test.ts +++ b/packages/twenty-front/src/modules/object-record/spreadsheet-import/utils/__tests__/spreadsheetImportGetUnicityTableHook.test.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { spreadsheetImportGetUnicityTableHook } from '@/object-record/spreadsheet-import/utils/spreadsheetImportGetUnicityTableHook'; import { type ImportedStructuredRow } from '@/spreadsheet-import/types'; import { IndexType } from '~/generated-metadata/graphql'; @@ -23,7 +23,7 @@ describe('spreadsheetImportGetUnicityTableHook', () => { fieldName: 'employees', }); - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { ...baseMockCompany, indexMetadatas: [ { diff --git a/packages/twenty-front/src/modules/object-record/spreadsheet-import/utils/spreadsheetImportGetUnicityTableHook.ts b/packages/twenty-front/src/modules/object-record/spreadsheet-import/utils/spreadsheetImportGetUnicityTableHook.ts index 510d2c14c9..84e9ff5fe6 100644 --- a/packages/twenty-front/src/modules/object-record/spreadsheet-import/utils/spreadsheetImportGetUnicityTableHook.ts +++ b/packages/twenty-front/src/modules/object-record/spreadsheet-import/utils/spreadsheetImportGetUnicityTableHook.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType'; import { getCompositeSubFieldKey } from '@/object-record/spreadsheet-import/utils/spreadsheetImportGetCompositeSubFieldKey'; import { COMPOSITE_FIELD_SUB_FIELD_LABELS } from '@/settings/data-model/constants/CompositeFieldSubFieldLabel'; @@ -22,11 +22,11 @@ type Column = { }; export const spreadsheetImportGetUnicityTableHook = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { const uniqueConstraintsFields = getUniqueConstraintsFields< FieldMetadataItem, - ObjectMetadataItem + EnrichedObjectMetadataItem >(objectMetadataItem); const uniqueConstraintsWithColumnNames: Column[][] = diff --git a/packages/twenty-front/src/modules/object-record/utils/__tests__/computeOptimisticRecordFromInput.test.ts b/packages/twenty-front/src/modules/object-record/utils/__tests__/computeOptimisticRecordFromInput.test.ts index 5b7d0ffdc8..e3e1dddc89 100644 --- a/packages/twenty-front/src/modules/object-record/utils/__tests__/computeOptimisticRecordFromInput.test.ts +++ b/packages/twenty-front/src/modules/object-record/utils/__tests__/computeOptimisticRecordFromInput.test.ts @@ -1,5 +1,5 @@ import { type CurrentWorkspaceMember } from '@/auth/states/currentWorkspaceMemberState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode'; import { updateRecordFromCache } from '@/object-record/cache/utils/updateRecordFromCache'; import { generateDepthRecordGqlFieldsFromRecord } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromRecord'; @@ -8,7 +8,7 @@ import { computeOptimisticRecordFromInput } from '@/object-record/utils/computeO import { type WorkspaceMember } from '@/workspace-member/types/WorkspaceMember'; import { InMemoryCache } from '@apollo/client'; import { mockedWorkspaceMemberRecords } from '~/testing/mock-data/generated/data/workspaceMembers/mock-workspaceMembers-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockFieldMetadataItemOrThrow } from '~/testing/utils/getMockFieldMetadataItemOrThrow'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; @@ -36,7 +36,7 @@ describe('computeOptimisticRecordFromInput', () => { const result = computeOptimisticRecordFromInput({ currentWorkspaceMember, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordInput: { city: 'Paris', @@ -59,7 +59,7 @@ describe('computeOptimisticRecordFromInput', () => { }; const result = computeOptimisticRecordFromInput({ currentWorkspaceMember, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordInput: { city: 'Paris', @@ -85,7 +85,7 @@ describe('computeOptimisticRecordFromInput', () => { const personObjectMetadataItem = getMockObjectMetadataItemOrThrow('person'); const result = computeOptimisticRecordFromInput({ currentWorkspaceMember, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordInput: { id: '20202020-058c-4591-a7d7-50a75af6d1e6', @@ -115,7 +115,7 @@ describe('computeOptimisticRecordFromInput', () => { const result = computeOptimisticRecordFromInput({ currentWorkspaceMember, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordInput: { companyId: '123', @@ -140,7 +140,7 @@ describe('computeOptimisticRecordFromInput', () => { __typename: 'Company', }; - const objectMetadataItem: ObjectMetadataItem = { + const objectMetadataItem: EnrichedObjectMetadataItem = { ...companyObjectMetadataItem, fields: companyObjectMetadataItem.fields.filter( (field) => field.name === 'id', @@ -148,12 +148,12 @@ describe('computeOptimisticRecordFromInput', () => { }; const recordGqlFields = generateDepthRecordGqlFieldsFromRecord({ objectMetadataItem, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), record: companyRecord, depth: 1, }); updateRecordFromCache({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem, cache, record: companyRecord, @@ -163,7 +163,7 @@ describe('computeOptimisticRecordFromInput', () => { const result = computeOptimisticRecordFromInput({ currentWorkspaceMember, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordInput: { companyId: '123', @@ -190,7 +190,7 @@ describe('computeOptimisticRecordFromInput', () => { __typename: 'Company', }; - const objectMetadataItem: ObjectMetadataItem = { + const objectMetadataItem: EnrichedObjectMetadataItem = { ...companyObjectMetadataItem, fields: [ getMockFieldMetadataItemOrThrow({ @@ -203,10 +203,10 @@ describe('computeOptimisticRecordFromInput', () => { depth: 1, objectMetadataItem, record: companyRecord, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), }); updateRecordFromCache({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem, cache, record: companyRecord, @@ -216,7 +216,7 @@ describe('computeOptimisticRecordFromInput', () => { const result = computeOptimisticRecordFromInput({ currentWorkspaceMember, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordInput: { companyId: '123', @@ -237,7 +237,7 @@ describe('computeOptimisticRecordFromInput', () => { const result = computeOptimisticRecordFromInput({ currentWorkspaceMember, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordInput: { companyId: null, @@ -259,7 +259,7 @@ describe('computeOptimisticRecordFromInput', () => { expect(() => computeOptimisticRecordFromInput({ currentWorkspaceMember, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem: personObjectMetadataItem, recordInput: { unknwon: 'unknown', diff --git a/packages/twenty-front/src/modules/object-record/utils/__tests__/generateAggregateQuery.test.ts b/packages/twenty-front/src/modules/object-record/utils/__tests__/generateAggregateQuery.test.ts index fdca3d9b2f..2511a6ac1d 100644 --- a/packages/twenty-front/src/modules/object-record/utils/__tests__/generateAggregateQuery.test.ts +++ b/packages/twenty-front/src/modules/object-record/utils/__tests__/generateAggregateQuery.test.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateAggregateQuery } from '@/object-record/utils/generateAggregateQuery'; describe('generateAggregateQuery', () => { it('should generate correct aggregate query', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { nameSingular: 'company', namePlural: 'companies', id: 'test-id', @@ -46,7 +46,7 @@ describe('generateAggregateQuery', () => { }); it('should handle empty record fields', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { nameSingular: 'person', namePlural: 'people', id: 'test-id', diff --git a/packages/twenty-front/src/modules/object-record/utils/__tests__/generateGroupByQuery.test.ts b/packages/twenty-front/src/modules/object-record/utils/__tests__/generateGroupByQuery.test.ts index 67375c7d01..7772110218 100644 --- a/packages/twenty-front/src/modules/object-record/utils/__tests__/generateGroupByQuery.test.ts +++ b/packages/twenty-front/src/modules/object-record/utils/__tests__/generateGroupByQuery.test.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateGroupByAggregateQuery } from '@/object-record/record-aggregate/utils/generateGroupByAggregateQuery'; describe('generateGroupByQuery', () => { @@ -37,7 +37,7 @@ describe('generateGroupByQuery', () => { 'should generate valid GraphQL query for $description', ({ objectMetadataItem, aggregateOperations }) => { const result = generateGroupByAggregateQuery({ - objectMetadataItem: objectMetadataItem as ObjectMetadataItem, + objectMetadataItem: objectMetadataItem as EnrichedObjectMetadataItem, aggregateOperationGqlFields: aggregateOperations, }); diff --git a/packages/twenty-front/src/modules/object-record/utils/buildRecordLabelPayload.ts b/packages/twenty-front/src/modules/object-record/utils/buildRecordLabelPayload.ts index c7685564e4..e37c6d7d84 100644 --- a/packages/twenty-front/src/modules/object-record/utils/buildRecordLabelPayload.ts +++ b/packages/twenty-front/src/modules/object-record/utils/buildRecordLabelPayload.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; @@ -6,7 +6,7 @@ import { isDefined } from 'twenty-shared/utils'; type BuildRecordLabelPayloadArgs = { id: string; searchInput?: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const buildRecordLabelPayload = ({ diff --git a/packages/twenty-front/src/modules/object-record/utils/computeOptimisticCreateRecordBaseRecordInput.ts b/packages/twenty-front/src/modules/object-record/utils/computeOptimisticCreateRecordBaseRecordInput.ts index 8d89f3fa64..59accb8bd5 100644 --- a/packages/twenty-front/src/modules/object-record/utils/computeOptimisticCreateRecordBaseRecordInput.ts +++ b/packages/twenty-front/src/modules/object-record/utils/computeOptimisticCreateRecordBaseRecordInput.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { hasObjectMetadataItemFieldCreatedBy } from '@/object-metadata/utils/hasObjectMetadataItemFieldCreatedBy'; import { hasObjectMetadataItemPositionField } from '@/object-metadata/utils/hasObjectMetadataItemPositionField'; import { type FieldActorForInputValue } from '@/object-record/record-field/ui/types/FieldMetadata'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; export const computeOptimisticCreateRecordBaseRecordInput = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { const baseRecordInput: Partial = {}; diff --git a/packages/twenty-front/src/modules/object-record/utils/computeOptimisticRecordFromInput.ts b/packages/twenty-front/src/modules/object-record/utils/computeOptimisticRecordFromInput.ts index c1a33d6f30..a32b18b1de 100644 --- a/packages/twenty-front/src/modules/object-record/utils/computeOptimisticRecordFromInput.ts +++ b/packages/twenty-front/src/modules/object-record/utils/computeOptimisticRecordFromInput.ts @@ -1,7 +1,7 @@ import { isNull, isUndefined } from '@sniptt/guards'; import { type CurrentWorkspaceMember } from '@/auth/states/currentWorkspaceMemberState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getFieldMetadataFromGqlField } from '@/object-record/cache/utils/getFieldMetadataFromGqlField'; import { getMorphRelationFromFieldMetadataAndGqlField } from '@/object-record/cache/utils/getMorphRelationFromFieldMetadataAndGqlField'; import { @@ -21,7 +21,7 @@ import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql'; type ComputeOptimisticCacheRecordInputArgs = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordInput: Partial; currentWorkspaceMember: CurrentWorkspaceMember | null; } & Pick< diff --git a/packages/twenty-front/src/modules/object-record/utils/generateAggregateQuery.ts b/packages/twenty-front/src/modules/object-record/utils/generateAggregateQuery.ts index 26d4553120..aae7337b8f 100644 --- a/packages/twenty-front/src/modules/object-record/utils/generateAggregateQuery.ts +++ b/packages/twenty-front/src/modules/object-record/utils/generateAggregateQuery.ts @@ -1,6 +1,6 @@ import gql from 'graphql-tag'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGqlFields } from '@/object-record/graphql/record-gql-fields/types/RecordGqlFields'; import { getAggregateQueryName } from '@/object-record/utils/getAggregateQueryName'; import { capitalize } from 'twenty-shared/utils'; @@ -9,7 +9,7 @@ export const generateAggregateQuery = ({ objectMetadataItem, recordGqlFields, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordGqlFields: RecordGqlFields; }) => { const selectedFields = Object.entries(recordGqlFields) diff --git a/packages/twenty-front/src/modules/object-record/utils/generateFindManyRecordsQuery.ts b/packages/twenty-front/src/modules/object-record/utils/generateFindManyRecordsQuery.ts index 0a2d32f4dd..11c7fff93e 100644 --- a/packages/twenty-front/src/modules/object-record/utils/generateFindManyRecordsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/utils/generateFindManyRecordsQuery.ts @@ -1,6 +1,6 @@ import gql from 'graphql-tag'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { type ObjectPermissions, @@ -17,8 +17,8 @@ export const generateFindManyRecordsQuery = ({ cursorDirection, objectPermissionsByObjectMetadataId, }: { - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; recordGqlFields?: RecordGqlOperationGqlRecordFields; computeReferences?: boolean; cursorDirection?: QueryCursorDirection; diff --git a/packages/twenty-front/src/modules/object-record/utils/generateGroupByRecordsQuery.ts b/packages/twenty-front/src/modules/object-record/utils/generateGroupByRecordsQuery.ts index ffb7a7f90c..a5018e7125 100644 --- a/packages/twenty-front/src/modules/object-record/utils/generateGroupByRecordsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/utils/generateGroupByRecordsQuery.ts @@ -1,6 +1,6 @@ import { gql } from '@apollo/client'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { type ObjectPermissions, @@ -15,8 +15,8 @@ export const generateGroupByRecordsQuery = ({ computeReferences, objectPermissionsByObjectMetadataId, }: { - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; recordGqlFields?: RecordGqlOperationGqlRecordFields; computeReferences?: boolean; objectPermissionsByObjectMetadataId: Record< diff --git a/packages/twenty-front/src/modules/object-record/utils/getRecordChipGenerators.ts b/packages/twenty-front/src/modules/object-record/utils/getRecordChipGenerators.ts index 1184013180..6acad71124 100644 --- a/packages/twenty-front/src/modules/object-record/utils/getRecordChipGenerators.ts +++ b/packages/twenty-front/src/modules/object-record/utils/getRecordChipGenerators.ts @@ -2,7 +2,7 @@ import { type ChipGeneratorPerObjectNameSingularPerFieldName, type IdentifierChipGeneratorPerObject, } from '@/object-metadata/contexts/PreComputedChipGeneratorsContext'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getAvatarType } from '@/object-metadata/utils/getAvatarType'; import { getAvatarUrl } from '@/object-metadata/utils/getAvatarUrl'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; @@ -15,7 +15,7 @@ import { isDefined } from 'twenty-shared/utils'; import { FieldMetadataType } from '~/generated-metadata/graphql'; export const getRecordChipGenerators = ( - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], allowRequestsToTwentyIcons?: boolean, ) => { const chipGeneratorPerObjectPerField: ChipGeneratorPerObjectNameSingularPerFieldName = diff --git a/packages/twenty-front/src/modules/object-record/utils/isFieldCellSupported.ts b/packages/twenty-front/src/modules/object-record/utils/isFieldCellSupported.ts index 0a6b113114..95089e1cb2 100644 --- a/packages/twenty-front/src/modules/object-record/utils/isFieldCellSupported.ts +++ b/packages/twenty-front/src/modules/object-record/utils/isFieldCellSupported.ts @@ -1,13 +1,13 @@ import { CoreObjectNameSingular } from 'twenty-shared/types'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { isObjectMetadataAvailableForRelation } from '@/object-metadata/utils/isObjectMetadataAvailableForRelation'; import { FieldMetadataType } from '~/generated-metadata/graphql'; export const isFieldCellSupported = ( fieldMetadataItem: FieldMetadataItem, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ) => { if (fieldMetadataItem.type === FieldMetadataType.POSITION) { return false; diff --git a/packages/twenty-front/src/modules/object-record/utils/prefillRecord.ts b/packages/twenty-front/src/modules/object-record/utils/prefillRecord.ts index 2ad96b0fdb..8358091969 100644 --- a/packages/twenty-front/src/modules/object-record/utils/prefillRecord.ts +++ b/packages/twenty-front/src/modules/object-record/utils/prefillRecord.ts @@ -1,14 +1,14 @@ import { isUndefined } from '@sniptt/guards'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { generateEmptyFieldValue } from '@/object-record/utils/generateEmptyFieldValue'; import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils'; import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql'; type PrefillRecordArgs = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; input: Record; }; export const prefillRecord = ({ diff --git a/packages/twenty-front/src/modules/object-record/utils/sanitizeRecordInput.ts b/packages/twenty-front/src/modules/object-record/utils/sanitizeRecordInput.ts index 1c1c5a1f5e..b8c7e97cfe 100644 --- a/packages/twenty-front/src/modules/object-record/utils/sanitizeRecordInput.ts +++ b/packages/twenty-front/src/modules/object-record/utils/sanitizeRecordInput.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isFieldMorphRelation } from '@/object-record/record-field/ui/types/guards/isFieldMorphRelation'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { isSystemSearchVectorField } from '@/object-record/utils/isSystemSearchVectorField'; @@ -9,7 +9,7 @@ export const sanitizeRecordInput = ({ objectMetadataItem, recordInput, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordInput: Partial; }) => { const filteredResultRecord = Object.fromEntries( diff --git a/packages/twenty-front/src/modules/page-layout/components/PageLayoutTabsRenderer.tsx b/packages/twenty-front/src/modules/page-layout/components/PageLayoutTabsRenderer.tsx index f343650bcf..74e2ccdd21 100644 --- a/packages/twenty-front/src/modules/page-layout/components/PageLayoutTabsRenderer.tsx +++ b/packages/twenty-front/src/modules/page-layout/components/PageLayoutTabsRenderer.tsx @@ -1,5 +1,5 @@ import { metadataStoreState } from '@/metadata-store/states/metadataStoreState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type FlatObjectMetadataItem } from '@/metadata-store/types/FlatObjectMetadataItem'; import { PageLayoutLeftPanel } from '@/page-layout/components/PageLayoutLeftPanel'; import { PageLayoutTabList } from '@/page-layout/components/PageLayoutTabList'; import { PageLayoutTabListEffect } from '@/page-layout/components/PageLayoutTabListEffect'; @@ -96,7 +96,7 @@ export const PageLayoutTabsRenderer = () => { ); const isSystemObject = - (metadataStore.current as ObjectMetadataItem[]).find( + (metadataStore.current as FlatObjectMetadataItem[]).find( (item) => item.nameSingular === targetRecordIdentifier?.targetObjectNameSingular, )?.isSystem ?? false; diff --git a/packages/twenty-front/src/modules/page-layout/utils/getGroupByQueryResultGqlFieldName.ts b/packages/twenty-front/src/modules/page-layout/utils/getGroupByQueryResultGqlFieldName.ts index 67a28d691b..53dda69c5a 100644 --- a/packages/twenty-front/src/modules/page-layout/utils/getGroupByQueryResultGqlFieldName.ts +++ b/packages/twenty-front/src/modules/page-layout/utils/getGroupByQueryResultGqlFieldName.ts @@ -1,7 +1,7 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export const getGroupByQueryResultGqlFieldName = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ): string => { return `${objectMetadataItem.namePlural}GroupBy`; }; diff --git a/packages/twenty-front/src/modules/page-layout/widgets/components/__stories__/DashboardWidgetPlaceholder.stories.tsx b/packages/twenty-front/src/modules/page-layout/widgets/components/__stories__/DashboardWidgetPlaceholder.stories.tsx index af03c3be00..ce755a5401 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/components/__stories__/DashboardWidgetPlaceholder.stories.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/components/__stories__/DashboardWidgetPlaceholder.stories.tsx @@ -16,7 +16,7 @@ import { PageLayoutTabLayoutMode, PageLayoutType, } from '~/generated-metadata/graphql'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const mockPageLayout: PageLayout = { id: 'page-layout-1', @@ -35,7 +35,7 @@ const meta: Meta = { (Story) => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); jotaiStore.set( diff --git a/packages/twenty-front/src/modules/page-layout/widgets/components/__stories__/WidgetRenderer.stories.tsx b/packages/twenty-front/src/modules/page-layout/widgets/components/__stories__/WidgetRenderer.stories.tsx index bf30e92da8..21d2950666 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/components/__stories__/WidgetRenderer.stories.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/components/__stories__/WidgetRenderer.stories.tsx @@ -46,7 +46,7 @@ import { } from '~/generated-metadata/graphql'; import { ChipGeneratorsDecorator } from '~/testing/decorators/ChipGeneratorsDecorator'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockFieldMetadataItemOrThrow } from '~/testing/utils/getMockFieldMetadataItemOrThrow'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; @@ -279,7 +279,7 @@ export const WithNumberChart: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget(widget); @@ -366,7 +366,7 @@ export const WithGaugeChart: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget(widget); @@ -457,7 +457,7 @@ export const WithBarChart: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget(widget); @@ -551,7 +551,7 @@ export const SmallWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget(widget); @@ -649,7 +649,7 @@ export const MediumWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget(widget); @@ -747,7 +747,7 @@ export const LargeWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget(widget); @@ -841,7 +841,7 @@ export const WideWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget(widget); @@ -939,7 +939,7 @@ export const TallWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget(widget); @@ -1033,7 +1033,7 @@ export const WithManyToOneRelationFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1152,7 +1152,7 @@ export const WithOneToManyRelationFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1263,7 +1263,7 @@ export const OneToManyRelationFieldWidgetWithSeeAllButton: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1401,7 +1401,7 @@ export const OnMobile: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1499,7 +1499,7 @@ export const InSidePanel: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1658,7 +1658,7 @@ export const Catalog: CatalogStory = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); diff --git a/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetCellEditModePortal.tsx b/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetCellEditModePortal.tsx index a4ae0c8249..4855670153 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetCellEditModePortal.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetCellEditModePortal.tsx @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FieldInput } from '@/object-record/record-field/ui/components/FieldInput'; import { RecordInlineCellAnchoredPortal } from '@/object-record/record-inline-cell/components/RecordInlineCellAnchoredPortal'; import { RecordInlineCellEditMode } from '@/object-record/record-inline-cell/components/RecordInlineCellEditMode'; @@ -10,7 +10,7 @@ import { fieldWidgetHoverComponentState } from '@/page-layout/widgets/field/stat import { useSetAtomComponentState } from '@/ui/utilities/state/jotai/hooks/useSetAtomComponentState'; type FieldWidgetCellEditModePortalProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; fieldMetadataItem: FieldMetadataItem; recordId: string; instanceId: string; diff --git a/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetCellHoveredPortal.tsx b/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetCellHoveredPortal.tsx index da8d480129..83b475d3ef 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetCellHoveredPortal.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetCellHoveredPortal.tsx @@ -1,11 +1,11 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordInlineCellAnchoredPortal } from '@/object-record/record-inline-cell/components/RecordInlineCellAnchoredPortal'; import { FieldWidgetCellHoveredContent } from '@/page-layout/widgets/field/components/FieldWidgetCellHoveredContent'; import { useIsFieldWidgetEditing } from '@/page-layout/widgets/field/hooks/useIsFieldWidgetEditing'; type FieldWidgetCellHoveredPortalProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; fieldMetadataItem: FieldMetadataItem; recordId: string; instanceId: string; diff --git a/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetDisplay.tsx b/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetDisplay.tsx index 9fa6dfe57c..6922301389 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetDisplay.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/field/components/FieldWidgetDisplay.tsx @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { useIsRecordReadOnly } from '@/object-record/read-only/hooks/useIsRecordReadOnly'; import { isRecordFieldReadOnly } from '@/object-record/read-only/utils/isRecordFieldReadOnly'; @@ -27,7 +27,7 @@ const StyledContainer = styled.div` type FieldWidgetDisplayProps = { fieldDefinition: FieldDefinition; fieldMetadataItem: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordId: string; isInSidePanel: boolean; }; diff --git a/packages/twenty-front/src/modules/page-layout/widgets/field/components/__stories__/FieldWidget.stories.tsx b/packages/twenty-front/src/modules/page-layout/widgets/field/components/__stories__/FieldWidget.stories.tsx index 2f7f109ffa..a5b1ffcf99 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/field/components/__stories__/FieldWidget.stories.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/field/components/__stories__/FieldWidget.stories.tsx @@ -33,7 +33,7 @@ import { import { ChipGeneratorsDecorator } from '~/testing/decorators/ChipGeneratorsDecorator'; import { FileUploadDecorator } from '~/testing/decorators/FileUploadDecorator'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockFieldMetadataItemOrThrow } from '~/testing/utils/getMockFieldMetadataItemOrThrow'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; @@ -358,7 +358,7 @@ export const TextFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -452,7 +452,7 @@ export const AddressFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -549,7 +549,7 @@ export const NumberFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -643,7 +643,7 @@ export const LinkFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -737,7 +737,7 @@ export const ManyToOneRelationFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -841,7 +841,7 @@ export const OneToManyRelationFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -937,7 +937,7 @@ export const BooleanFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1030,7 +1030,7 @@ export const CurrencyFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1123,7 +1123,7 @@ export const EmailsFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1217,7 +1217,7 @@ export const PhonesFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1311,7 +1311,7 @@ export const SelectFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1406,7 +1406,7 @@ export const MultiSelectFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1504,7 +1504,7 @@ export const TimelineActivityRelationFieldWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1603,7 +1603,7 @@ export const ManyToOneRelationCardWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1715,7 +1715,7 @@ export const OneToManyRelationCardWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1810,7 +1810,7 @@ export const TimelineActivityRelationCardWidget: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( @@ -1971,7 +1971,7 @@ export const OneToManyRelationCardWidgetWithProgressiveLoading: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); const pageLayoutData = createPageLayoutWithWidget( diff --git a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx index c28ad6d604..354429ef3f 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupEditor.tsx @@ -4,7 +4,7 @@ import { useLingui } from '@lingui/react/macro'; import { DraggableItem } from '@/ui/layout/draggable-list/components/DraggableItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FieldsConfigurationFieldEditor } from '@/page-layout/widgets/fields/components/FieldsConfigurationFieldEditor'; import { FieldsConfigurationGroupDropdown } from '@/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown'; import { FieldsConfigurationGroupRenameInput } from '@/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput'; @@ -71,7 +71,7 @@ const StyledDropdownContainer = styled.div` type FieldsConfigurationGroupEditorProps = { group: FieldsWidgetGroup; index: number; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; draggableProvided: DraggableProvided; isDragging: boolean; onAddGroup?: () => void; diff --git a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetCellEditModePortal.tsx b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetCellEditModePortal.tsx index 2689e79bf9..02685efd1e 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetCellEditModePortal.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetCellEditModePortal.tsx @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordFieldListInputContextProvider } from '@/object-record/record-field-list/anchored-portal/components/RecordFieldListInputContextProvider'; import { RecordFieldListComponentInstanceContext } from '@/object-record/record-field-list/states/contexts/RecordFieldListComponentInstanceContext'; import { recordFieldListCellEditModePositionComponentState } from '@/object-record/record-field-list/states/recordFieldListCellEditModePositionComponentState'; @@ -11,7 +11,7 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use import { isDefined } from 'twenty-shared/utils'; type FieldsWidgetCellEditModePortalProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordId: string; flattenedFieldMetadataItems: FieldMetadataItem[]; }; diff --git a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetCellHoveredPortal.tsx b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetCellHoveredPortal.tsx index aadf2180f9..8a5f78136e 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetCellHoveredPortal.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetCellHoveredPortal.tsx @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordFieldListCellHoveredPortalContent } from '@/object-record/record-field-list/anchored-portal/components/RecordFieldListCellHoveredPortalContent'; import { RecordFieldListInputContextProvider } from '@/object-record/record-field-list/anchored-portal/components/RecordFieldListInputContextProvider'; import { RecordFieldListComponentInstanceContext } from '@/object-record/record-field-list/states/contexts/RecordFieldListComponentInstanceContext'; @@ -10,7 +10,7 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use import { isDefined } from 'twenty-shared/utils'; type FieldsWidgetCellHoveredPortalProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordId: string; flattenedFieldMetadataItems: FieldMetadataItem[]; }; diff --git a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetFieldItem.tsx b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetFieldItem.tsx index 3af766a2ee..1c1924afee 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetFieldItem.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/FieldsWidgetFieldItem.tsx @@ -1,6 +1,6 @@ import { ActivityTargetsInlineCell } from '@/activities/inline-cell/components/ActivityTargetsInlineCell'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition'; import { isRecordFieldReadOnly } from '@/object-record/read-only/utils/isRecordFieldReadOnly'; import { isActivityTargetField } from '@/object-record/record-field-list/utils/categorizeRelationFields'; @@ -23,8 +23,8 @@ type FieldsWidgetFieldItemProps = { globalIndex: number; recordId: string; targetObjectNameSingular: string; - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems: EnrichedObjectMetadataItem[]; objectPermissionsByObjectMetadataId: Record< string, ObjectPermissions & { objectMetadataId: string } diff --git a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/__stories__/FieldsWidget.stories.tsx b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/__stories__/FieldsWidget.stories.tsx index 6317e3ae6f..3d6087e41f 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/fields/components/__stories__/FieldsWidget.stories.tsx +++ b/packages/twenty-front/src/modules/page-layout/widgets/fields/components/__stories__/FieldsWidget.stories.tsx @@ -36,7 +36,7 @@ import { import { ChipGeneratorsDecorator } from '~/testing/decorators/ChipGeneratorsDecorator'; import { FileUploadDecorator } from '~/testing/decorators/FileUploadDecorator'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockFieldMetadataItemOrThrow } from '~/testing/utils/getMockFieldMetadataItemOrThrow'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; import { setTestViewsInMetadataStore } from '~/testing/utils/setTestViewsInMetadataStore'; @@ -305,7 +305,7 @@ export const WithViewFieldGroups: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); setTestViewsInMetadataStore(jotaiStore, [view]); @@ -391,7 +391,7 @@ export const WithInlineViewFields: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); setTestViewsInMetadataStore(jotaiStore, [view]); @@ -475,7 +475,7 @@ export const Empty: Story = { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); jotaiStore.set(isMinimalMetadataReadyState.atom, true); setTestViewsInMetadataStore(jotaiStore, [view]); diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/graph-widget-line-chart/hooks/useGraphLineChartWidgetData.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/graph-widget-line-chart/hooks/useGraphLineChartWidgetData.ts index 2628fb968a..85f6157e05 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/graph-widget-line-chart/hooks/useGraphLineChartWidgetData.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/graph-widget-line-chart/hooks/useGraphLineChartWidgetData.ts @@ -1,5 +1,5 @@ import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type LineChartSeriesWithColor } from '@/page-layout/widgets/graph/graph-widget-line-chart/types/LineChartSeriesWithColor'; import { type GraphColorMode } from '@/page-layout/widgets/graph/types/GraphColorMode'; import { type RawDimensionValue } from '@/page-layout/widgets/graph/types/RawDimensionValue'; @@ -33,7 +33,7 @@ type UseGraphLineChartWidgetDataResult = { yAxisLabel: string; loading: boolean; error?: Error; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const useGraphLineChartWidgetData = ({ diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/graph-widget-pie-chart/hooks/useGraphPieChartWidgetData.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/graph-widget-pie-chart/hooks/useGraphPieChartWidgetData.ts index 68d847c9e8..4527eb0aad 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/graph-widget-pie-chart/hooks/useGraphPieChartWidgetData.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/graph-widget-pie-chart/hooks/useGraphPieChartWidgetData.ts @@ -1,5 +1,5 @@ import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type PieChartDataItemWithColor } from '@/page-layout/widgets/graph/graph-widget-pie-chart/types/PieChartDataItem'; import { type GraphColorMode } from '@/page-layout/widgets/graph/types/GraphColorMode'; import { type RawDimensionValue } from '@/page-layout/widgets/graph/types/RawDimensionValue'; @@ -28,7 +28,7 @@ type UseGraphPieChartWidgetDataResult = { loading: boolean; error?: Error; hasTooManyGroups: boolean; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; formattedToRawLookup: Map; colorMode: GraphColorMode; showDataLabels: boolean; diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/types/BuildChartDrilldownQueryParamsInput.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/types/BuildChartDrilldownQueryParamsInput.ts index 21de9b1a84..6786dbdb1e 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/types/BuildChartDrilldownQueryParamsInput.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/types/BuildChartDrilldownQueryParamsInput.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RawDimensionValue } from '@/page-layout/widgets/graph/types/RawDimensionValue'; import { type FirstDayOfTheWeek } from 'twenty-shared/types'; import { @@ -8,7 +8,7 @@ import { } from '~/generated-metadata/graphql'; export type BuildChartDrilldownQueryParamsInput = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; configuration: | BarChartConfiguration | LineChartConfiguration diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsForChartFieldOrderBy.test.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsForChartFieldOrderBy.test.ts index f88c841f24..80933260cc 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsForChartFieldOrderBy.test.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsForChartFieldOrderBy.test.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { buildSortsForChartFieldOrderBy } from '@/page-layout/widgets/graph/utils/buildSortsForChartFieldOrderBy'; import { type NormalizedChartConfigurationFields } from '@/page-layout/widgets/graph/utils/normalizeChartConfigurationFields'; import { FieldMetadataType } from 'twenty-shared/types'; import { GraphOrderBy } from '~/generated-metadata/graphql'; describe('buildSortsForChartFieldOrderBy', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'obj-1', nameSingular: 'opportunity', namePlural: 'opportunities', @@ -29,7 +29,7 @@ describe('buildSortsForChartFieldOrderBy', () => { label: 'Address', }, ], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; it('should return ASC sort for FIELD_ASC orderBy', () => { const normalizedFields: NormalizedChartConfigurationFields = { diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsForChartValueOrderBy.test.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsForChartValueOrderBy.test.ts index bb1702da67..945b9be5f1 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsForChartValueOrderBy.test.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsForChartValueOrderBy.test.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { buildSortsForChartValueOrderBy } from '@/page-layout/widgets/graph/utils/buildSortsForChartValueOrderBy'; import { type NormalizedChartConfigurationFields } from '@/page-layout/widgets/graph/utils/normalizeChartConfigurationFields'; import { FieldMetadataType } from 'twenty-shared/types'; import { GraphOrderBy } from '~/generated-metadata/graphql'; describe('buildSortsForChartValueOrderBy', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'obj-1', nameSingular: 'opportunity', namePlural: 'opportunities', @@ -17,7 +17,7 @@ describe('buildSortsForChartValueOrderBy', () => { label: 'Amount', }, ], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; it('should return ASC sort for VALUE_ASC orderBy', () => { const normalizedFields: NormalizedChartConfigurationFields = { diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsFromChartConfig.test.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsFromChartConfig.test.ts index cdf7695bf4..905cb93c18 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsFromChartConfig.test.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/__tests__/buildSortsFromChartConfig.test.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { buildSortsFromChartConfig } from '@/page-layout/widgets/graph/utils/buildSortsFromChartConfig'; import { FieldMetadataType } from 'twenty-shared/types'; import { @@ -8,7 +8,7 @@ import { } from '~/generated-metadata/graphql'; describe('buildSortsFromChartConfig', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'obj-1', nameSingular: 'opportunity', namePlural: 'opportunities', @@ -32,7 +32,7 @@ describe('buildSortsFromChartConfig', () => { label: 'Created At', }, ], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; describe('integration', () => { it('should handle field-based sorting end-to-end for Bar charts', () => { diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildFilterQueryParams.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildFilterQueryParams.ts index ac10df584f..d4bd05232b 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildFilterQueryParams.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildFilterQueryParams.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { isDefined } from 'twenty-shared/utils'; @@ -13,7 +13,7 @@ export const buildFilterQueryParams = ({ }: { recordFilters?: RecordFilter[]; recordFilterGroups?: RecordFilterGroup[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }): URLSearchParams => { const params = new URLSearchParams(); diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsForChartFieldOrderBy.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsForChartFieldOrderBy.ts index 5717a6931f..9a58dcf18e 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsForChartFieldOrderBy.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsForChartFieldOrderBy.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type NormalizedChartConfigurationFields } from '@/page-layout/widgets/graph/utils/normalizeChartConfigurationFields'; import { isNonEmptyString } from '@sniptt/guards'; import { isDefined } from 'twenty-shared/utils'; @@ -11,7 +11,7 @@ type ChartSort = { type BuildSortsForChartFieldOrderByParams = { normalizedFields: NormalizedChartConfigurationFields; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const buildSortsForChartFieldOrderBy = ({ diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsForChartValueOrderBy.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsForChartValueOrderBy.ts index 31e50c45c4..9bd3822066 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsForChartValueOrderBy.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsForChartValueOrderBy.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type NormalizedChartConfigurationFields } from '@/page-layout/widgets/graph/utils/normalizeChartConfigurationFields'; import { isDefined } from 'twenty-shared/utils'; import { GraphOrderBy } from '~/generated-metadata/graphql'; @@ -11,7 +11,7 @@ type ChartSort = { type BuildSortsForChartValueOrderByParams = { normalizedFields: NormalizedChartConfigurationFields; aggregateFieldMetadataId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const buildSortsForChartValueOrderBy = ({ diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsFromChartConfig.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsFromChartConfig.ts index 86b028c774..183410a8bc 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsFromChartConfig.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/buildSortsFromChartConfig.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { buildSortsForChartFieldOrderBy } from '@/page-layout/widgets/graph/utils/buildSortsForChartFieldOrderBy'; import { buildSortsForChartValueOrderBy } from '@/page-layout/widgets/graph/utils/buildSortsForChartValueOrderBy'; import { normalizeChartConfigurationFields } from '@/page-layout/widgets/graph/utils/normalizeChartConfigurationFields'; @@ -19,7 +19,7 @@ type BuildSortsFromChartConfigParams = { | BarChartConfiguration | LineChartConfiguration | PieChartConfiguration; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const buildSortsFromChartConfig = ({ diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/isRelationNestedFieldDateKind.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/isRelationNestedFieldDateKind.ts index 1195f2c2f3..5d0d44594f 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/isRelationNestedFieldDateKind.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/isRelationNestedFieldDateKind.ts @@ -1,12 +1,12 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isFieldRelation } from '@/object-record/record-field/ui/types/guards/isFieldRelation'; import { isDefined, isFieldMetadataDateKind } from 'twenty-shared/utils'; type IsRelationNestedFieldDateKindParams = { relationField: FieldMetadataItem; relationNestedFieldName: string | undefined; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; }; export const isRelationNestedFieldDateKind = ({ diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/mapRecordFilterGroupToUrlFilterGroup.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/mapRecordFilterGroupToUrlFilterGroup.ts index cdcd788374..acb847ead5 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/mapRecordFilterGroupToUrlFilterGroup.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/mapRecordFilterGroupToUrlFilterGroup.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { isDefined } from 'twenty-shared/utils'; @@ -22,7 +22,7 @@ export const mapRecordFilterGroupToUrlFilterGroup = ({ recordFilterGroupId: string; allRecordFilters: RecordFilter[]; allRecordFilterGroups: RecordFilterGroup[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }): UrlFilterGroup | null => { const currentGroup = allRecordFilterGroups.find( (group) => group.id === recordFilterGroupId, diff --git a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/mapRecordFilterToUrlFilter.ts b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/mapRecordFilterToUrlFilter.ts index 20ae580a0d..363050266e 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/mapRecordFilterToUrlFilter.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/graph/utils/mapRecordFilterToUrlFilter.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { isNonEmptyString } from '@sniptt/guards'; import { isDefined } from 'twenty-shared/utils'; @@ -15,7 +15,7 @@ export const mapRecordFilterToUrlFilter = ({ objectMetadataItem, }: { recordFilter: RecordFilter; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }): UrlFilter | null => { const fieldMetadataItem = objectMetadataItem.fields.find( (field) => field.id === recordFilter.fieldMetadataId, diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/address/hooks/__tests__/useAddressSettingsFormInitialValues.test.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/address/hooks/__tests__/useAddressSettingsFormInitialValues.test.tsx index 2292e36e13..af4686190b 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/address/hooks/__tests__/useAddressSettingsFormInitialValues.test.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/address/hooks/__tests__/useAddressSettingsFormInitialValues.test.tsx @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { renderHook } from '@testing-library/react'; import { useFormContext } from 'react-hook-form'; import { FieldMetadataType } from 'twenty-shared/types'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { useAddressSettingsFormInitialValues } from '@/settings/data-model/fields/forms/address/hooks/useAddressSettingsFormInitialValues'; jest.mock('react-hook-form', () => ({ @@ -17,7 +17,7 @@ const mockUseFormContext = useFormContext as jest.MockedFunction< const Wrapper = getJestMetadataAndApolloMocksWrapper({ apolloMocks: [], - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), }); describe('useAddressSettingsFormInitialValues', () => { @@ -126,7 +126,7 @@ describe('useAddressSettingsFormInitialValues', () => { it('should return configured subFields when they exist', () => { const newGeneratedMockObjectMetadataItems = addNewAddressToMetadataItems( - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), 'new-field', ['addressStreet1', 'addressCity', 'addressCountry'], ); @@ -182,7 +182,7 @@ describe('useAddressSettingsFormInitialValues', () => { const WrapperSpecific = getJestMetadataAndApolloMocksWrapper({ apolloMocks: [], objectMetadataItems: addNewAddressToMetadataItems( - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), 'new-field', ['addressStreet1', 'addressCity'], ), @@ -205,11 +205,11 @@ describe('useAddressSettingsFormInitialValues', () => { }); const addNewAddressToMetadataItems = ( - generatedMockObjectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], fieldNameId: string, subFields: string[], ) => { - return generatedMockObjectMetadataItems + return objectMetadataItems .filter((item) => item.nameSingular === 'company') .map((item) => { const fields = item.fields; diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldDescriptionForm.stories.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldDescriptionForm.stories.tsx index 936af83c30..4dbfc8bbc0 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldDescriptionForm.stories.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldDescriptionForm.stories.tsx @@ -4,7 +4,7 @@ import { FormProviderDecorator } from '~/testing/decorators/FormProviderDecorato import { SettingsDataModelFieldDescriptionForm } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldDescriptionForm'; import { ComponentDecorator } from 'twenty-ui/testing'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const meta: Meta = { title: 'Modules/Settings/DataModel/SettingsDataModelFieldDescriptionForm', @@ -25,9 +25,10 @@ type Story = StoryObj; export const Default: Story = {}; -const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.namePlural === 'person', -); +const mockedPersonObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.namePlural === 'person', + ); export const WithFieldMetadataItem: Story = { args: { diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldIconLabelForm.stories.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldIconLabelForm.stories.tsx index a3984ac2e0..74080670a1 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldIconLabelForm.stories.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldIconLabelForm.stories.tsx @@ -6,7 +6,7 @@ import { IconsProviderDecorator } from '~/testing/decorators/IconsProviderDecora import { SettingsDataModelFieldIconLabelForm } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldIconLabelForm'; import { ComponentDecorator } from 'twenty-ui/testing'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const StyledContainer = styled.div` flex: 1; @@ -32,9 +32,10 @@ type Story = StoryObj; export const Default: Story = {}; -const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.namePlural === 'person', -); +const mockedPersonObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.namePlural === 'person', + ); export const WithFieldMetadataItem: Story = { args: { diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldSettingsFormCard.stories.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldSettingsFormCard.stories.tsx index c32cd8135f..c59604fc0f 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldSettingsFormCard.stories.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/__stories__/SettingsDataModelFieldSettingsFormCard.stories.tsx @@ -9,11 +9,12 @@ import { graphqlMocks } from '~/testing/graphqlMocks'; import { SettingsDataModelFieldSettingsFormCard } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldSettingsFormCard'; import { ComponentDecorator } from 'twenty-ui/testing'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); if (!mockedCompanyObjectMetadataItem) { throw new Error('Company object metadata item not found'); diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/morph-relation/hooks/useRelationSettingsFormDefaultValuesTargetFieldMetadata.ts b/packages/twenty-front/src/modules/settings/data-model/fields/forms/morph-relation/hooks/useRelationSettingsFormDefaultValuesTargetFieldMetadata.ts index 467c4bc8fa..2d7c8e97e3 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/morph-relation/hooks/useRelationSettingsFormDefaultValuesTargetFieldMetadata.ts +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/morph-relation/hooks/useRelationSettingsFormDefaultValuesTargetFieldMetadata.ts @@ -1,6 +1,6 @@ import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getFieldMetadataItemById } from '@/object-metadata/utils/getFieldMetadataItemById'; import { fieldMetadataItemHasMorphRelations } from '@/settings/data-model/fields/forms/morph-relation/utils/fieldMetadataItemHasMorphRelations'; import { FieldMetadataType, RelationType } from 'twenty-shared/types'; @@ -16,7 +16,7 @@ export const useRelationSettingsFormDefaultValuesTargetFieldMetadata = ({ 'type' | 'morphRelations' | 'relation' >; objectMetadataItem?: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'id' | 'namePlural' | 'nameSingular' | 'icon' >; relationType: RelationType; diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/hooks/__tests__/useFieldPreviewValue.test.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/preview/hooks/__tests__/useFieldPreviewValue.test.tsx index 8e859a8fb4..cc606ba320 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/hooks/__tests__/useFieldPreviewValue.test.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/hooks/__tests__/useFieldPreviewValue.test.tsx @@ -4,21 +4,23 @@ import { type FieldMetadataItemOption } from '@/object-metadata/types/FieldMetad import { FieldMetadataType } from '~/generated-metadata/graphql'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { useFieldPreviewValue } from '@/settings/data-model/fields/preview/hooks/useFieldPreviewValue'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); const mockedOpportunityObjectMetadataItem = - generatedMockObjectMetadataItems.find( + getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'opportunity', ); -const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -); +const mockedPersonObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + ); const Wrapper = getJestMetadataAndApolloMocksWrapper({ apolloMocks: [], diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getCurrencyFieldPreviewValue.test.ts b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getCurrencyFieldPreviewValue.test.ts index 23f400e3d1..03983e77c1 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getCurrencyFieldPreviewValue.test.ts +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getCurrencyFieldPreviewValue.test.ts @@ -1,15 +1,16 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getCurrencyFieldPreviewValue } from '@/settings/data-model/fields/preview/utils/getCurrencyFieldPreviewValue'; import { CurrencyCode } from 'twenty-shared/constants'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); const mockedOpportunityObjectMetadataItem = - generatedMockObjectMetadataItems.find( + getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'opportunity', ); diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getFieldPreviewValue.test.ts b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getFieldPreviewValue.test.ts index 581b4725c8..00014a855e 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getFieldPreviewValue.test.ts +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getFieldPreviewValue.test.ts @@ -1,15 +1,17 @@ import { getFieldPreviewValue } from '@/settings/data-model/fields/preview/utils/getFieldPreviewValue'; import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig'; import { FieldMetadataType } from '~/generated-metadata/graphql'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); -const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -); +const mockedPersonObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + ); describe('getFieldPreviewValue', () => { it("returns the field's defaultValue from metadata if it exists", () => { diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getMultiSelectFieldPreviewValue.test.ts b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getMultiSelectFieldPreviewValue.test.ts index 2ca872d20b..bce088172c 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getMultiSelectFieldPreviewValue.test.ts +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getMultiSelectFieldPreviewValue.test.ts @@ -1,13 +1,14 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMultiSelectFieldPreviewValue } from '@/settings/data-model/fields/preview/utils/getMultiSelectFieldPreviewValue'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); const mockedOpportunityObjectMetadataItem = - generatedMockObjectMetadataItems.find( + getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'opportunity', ); diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getSelectFieldPreviewValue.test.ts b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getSelectFieldPreviewValue.test.ts index 048d8d8e05..16ce0b3af2 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getSelectFieldPreviewValue.test.ts +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/__tests__/getSelectFieldPreviewValue.test.ts @@ -1,14 +1,15 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getSelectFieldPreviewValue } from '@/settings/data-model/fields/preview/utils/getSelectFieldPreviewValue'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); const mockedOpportunityObjectMetadataItem = - generatedMockObjectMetadataItems.find( + getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === 'opportunity', ); diff --git a/packages/twenty-front/src/modules/settings/data-model/graph-overview/components/SettingsDataModelOverviewObject.tsx b/packages/twenty-front/src/modules/settings/data-model/graph-overview/components/SettingsDataModelOverviewObject.tsx index 4f2b9522da..380594d851 100644 --- a/packages/twenty-front/src/modules/settings/data-model/graph-overview/components/SettingsDataModelOverviewObject.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/graph-overview/components/SettingsDataModelOverviewObject.tsx @@ -3,7 +3,7 @@ import { styled } from '@linaria/react'; import { type Node, type NodeProps } from '@xyflow/react'; import { Link } from 'react-router-dom'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { ObjectFieldRow } from '@/settings/data-model/graph-overview/components/SettingsDataModelOverviewField'; @@ -17,7 +17,10 @@ import { IconChevronDown, IconChevronUp, useIcons } from 'twenty-ui/display'; import { SettingsItemTypeTag } from '@/settings/components/SettingsItemTypeTag'; import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; -type SettingsDataModelOverviewObjectNode = Node; +type SettingsDataModelOverviewObjectNode = Node< + EnrichedObjectMetadataItem, + 'object' +>; type SettingsDataModelOverviewObjectProps = NodeProps; diff --git a/packages/twenty-front/src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectItemTableRow.tsx b/packages/twenty-front/src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectItemTableRow.tsx index 4ecdb3d433..b3fcc26b2e 100644 --- a/packages/twenty-front/src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectItemTableRow.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectItemTableRow.tsx @@ -1,5 +1,5 @@ import { isDefined } from 'twenty-shared/utils'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { TableCell } from '@/ui/layout/table/components/TableCell'; import { TableRow } from '@/ui/layout/table/components/TableRow'; import { Checkbox } from 'twenty-ui/input'; @@ -13,7 +13,7 @@ export const AVAILABLE_STANDARD_OBJECTS_GRID_TEMPLATE_COLUMNS = type SettingsAvailableStandardObjectItemTableRowProps = { isSelected?: boolean; - objectItem: ObjectMetadataItem; + objectItem: EnrichedObjectMetadataItem; onClick?: () => void; }; diff --git a/packages/twenty-front/src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx b/packages/twenty-front/src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx index a412700b66..baf888a18a 100644 --- a/packages/twenty-front/src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/new-object/components/SettingsAvailableStandardObjectsSection.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { Table } from '@/ui/layout/table/components/Table'; import { TableBody } from '@/ui/layout/table/components/TableBody'; import { TableHeader } from '@/ui/layout/table/components/TableHeader'; @@ -13,7 +13,7 @@ import { } from './SettingsAvailableStandardObjectItemTableRow'; type SettingsAvailableStandardObjectsSectionProps = { - objectItems: ObjectMetadataItem[]; + objectItems: EnrichedObjectMetadataItem[]; onChange: (selectedIds: Record) => void; selectedIds: Record; }; diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRow.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRow.tsx index 4ef0c43aa4..28ffa956a5 100644 --- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRow.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRow.tsx @@ -3,7 +3,7 @@ import { type ReactNode, useContext } from 'react'; import { styled } from '@linaria/react'; import { useLingui } from '@lingui/react/macro'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { SettingsItemTypeTag } from '@/settings/components/SettingsItemTypeTag'; import { TableRow } from '@/ui/layout/table/components/TableRow'; @@ -18,7 +18,7 @@ import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; export type SettingsObjectMetadataItemTableRowProps = { action: ReactNode; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; link?: string; totalObjectCount: number; }; diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectRelationItemTableRow.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectRelationItemTableRow.tsx index f253fc10a9..a6960bb45a 100644 --- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectRelationItemTableRow.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectRelationItemTableRow.tsx @@ -2,7 +2,7 @@ import { useDeleteOneFieldMetadataItem } from '@/object-metadata/hooks/useDelete import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataItem'; import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMetadata'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isObjectMetadataReadOnly } from '@/object-record/read-only/utils/isObjectMetadataReadOnly'; import { SettingsItemTypeTag } from '@/settings/components/SettingsItemTypeTag'; import { RELATION_TYPES } from '@/settings/data-model/constants/RelationTypes'; @@ -22,7 +22,7 @@ import { useNavigateSettings } from '~/hooks/useNavigateSettings'; type SettingsObjectRelationItemTableRowProps = { fieldMetadataItem: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const OBJECT_RELATION_TABLE_ROW_GRID_TEMPLATE_COLUMNS = diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx index df840f0b32..a79a43fd11 100644 --- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { SettingsTextInput } from '@/ui/input/components/SettingsTextInput'; import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown'; @@ -74,7 +74,7 @@ const SETTINGS_OBJECT_RELATION_TABLE_METADATA: TableMetadata }; type SettingsObjectRelationsTableProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const SettingsObjectRelationsTable = ({ diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsUpdateDataModelObjectAboutForm.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsUpdateDataModelObjectAboutForm.tsx index 52b860532c..3dcc7a0a54 100644 --- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsUpdateDataModelObjectAboutForm.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsUpdateDataModelObjectAboutForm.tsx @@ -1,5 +1,5 @@ import { useUpdateOneObjectMetadataItem } from '@/object-metadata/hooks/useUpdateOneObjectMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isObjectMetadataReadOnly } from '@/object-record/read-only/utils/isObjectMetadataReadOnly'; import { computeUpdatedNavigationMemorizedUrlAfterObjectNamePluralChange } from '@/settings/data-model/object-details/utils/computeUpdatedNavigationMemorizedUrlAfterObjectNamePluralChange'; import { SettingsDataModelObjectAboutForm } from '@/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm'; @@ -17,7 +17,7 @@ import { useNavigateSettings } from '~/hooks/useNavigateSettings'; import { updatedObjectNamePluralState } from '~/pages/settings/data-model/states/updatedObjectNamePluralState'; type SettingsUpdateDataModelObjectAboutFormProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const SettingsUpdateDataModelObjectAboutForm = ({ diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx index 75500ee46c..e559af212e 100644 --- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { isObjectMetadataReadOnly } from '@/object-record/read-only/utils/isObjectMetadataReadOnly'; import { SettingsObjectRelationsTable } from '@/settings/data-model/object-details/components/SettingsObjectRelationsTable'; @@ -20,7 +20,7 @@ const StyledButtonContainer = styled.div` `; type ObjectFieldsProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const ObjectFields = ({ objectMetadataItem }: ObjectFieldsProps) => { diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx index ddd92307d2..bbf9a28144 100644 --- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { t } from '@lingui/core/macro'; import { H2Title } from 'twenty-ui/display'; import { Section } from 'twenty-ui/layout'; import { SettingsObjectIndexTable } from '~/pages/settings/data-model/SettingsObjectIndexTable'; type ObjectIndexesProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const ObjectIndexes = ({ objectMetadataItem }: ObjectIndexesProps) => { diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx index cff1277718..ecfe43f5c1 100644 --- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useDeleteOneObjectMetadataItem } from '@/object-metadata/hooks/useDeleteOneObjectMetadataItem'; import { useUpdateOneObjectMetadataItem } from '@/object-metadata/hooks/useUpdateOneObjectMetadataItem'; @@ -18,7 +18,7 @@ import { themeCssVariables } from 'twenty-ui/theme-constants'; import { useNavigateSettings } from '~/hooks/useNavigateSettings'; type ObjectSettingsProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; isDeleting: boolean; setIsDeleting: (isDeleting: boolean) => void; }; diff --git a/packages/twenty-front/src/modules/settings/data-model/objects/components/SettingsDataModelObjectSummary.tsx b/packages/twenty-front/src/modules/settings/data-model/objects/components/SettingsDataModelObjectSummary.tsx index 0bbd2e2440..179c1d7f69 100644 --- a/packages/twenty-front/src/modules/settings/data-model/objects/components/SettingsDataModelObjectSummary.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/objects/components/SettingsDataModelObjectSummary.tsx @@ -2,7 +2,7 @@ import { t } from '@lingui/core/macro'; import { styled } from '@linaria/react'; import { useContext } from 'react'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { IconBox, OverflowingTextWithTooltip, @@ -14,7 +14,7 @@ import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; export type SettingsDataModelObjectPreviewProps = { className?: string; objectMetadataItems: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'icon' | 'labelSingular' | 'labelPlural' | 'isCustom' | 'isRemote' >[]; pluralizeLabel?: boolean; @@ -55,7 +55,7 @@ const StyledSeparator = styled.div` type SettingsDataModelObjectPreviewItemProps = { objectMetadataItem: Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, 'icon' | 'labelSingular' | 'labelPlural' | 'isCustom' | 'isRemote' >; pluralizeLabel: boolean; diff --git a/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx b/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx index acc356a15a..233525938e 100644 --- a/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { AdvancedSettingsWrapper } from '@/settings/components/AdvancedSettingsWrapper'; import { SettingsOptionCardContentToggle } from '@/settings/components/SettingsOptions/SettingsOptionCardContentToggle'; import { OBJECT_NAME_MAXIMUM_LENGTH } from '@/settings/data-model/constants/ObjectNameMaximumLength'; @@ -29,9 +29,9 @@ import { computeMetadataNamesFromLabels } from '~/pages/settings/data-model/util type SettingsDataModelObjectAboutFormProps = { disableEdition?: boolean; - objectMetadataItem?: ObjectMetadataItem; + objectMetadataItem?: EnrichedObjectMetadataItem; onNewDirtyField?: () => void; - conflictingObjectMetadataItem?: ObjectMetadataItem; + conflictingObjectMetadataItem?: EnrichedObjectMetadataItem; }; const StyledInputsContainer = styled.div` @@ -299,7 +299,7 @@ export const SettingsDataModelObjectAboutForm = ({ { label: t`API Name (Singular)`, fieldName: - 'nameSingular' as const satisfies StringKeyOf, + 'nameSingular' as const satisfies StringKeyOf, placeholder: `listing`, defaultValue: objectMetadataItem?.nameSingular ?? '', disableEdition: @@ -309,7 +309,7 @@ export const SettingsDataModelObjectAboutForm = ({ { label: t`API Name (Plural)`, fieldName: - 'namePlural' as const satisfies StringKeyOf, + 'namePlural' as const satisfies StringKeyOf, placeholder: `listings`, defaultValue: objectMetadataItem?.namePlural ?? '', disableEdition: diff --git a/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx b/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx index fae6b266d8..5a7874a7ee 100644 --- a/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectIdentifiersForm.tsx @@ -1,5 +1,5 @@ import { useUpdateOneObjectMetadataItem } from '@/object-metadata/hooks/useUpdateOneObjectMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getActiveFieldMetadataItems } from '@/object-metadata/utils/getActiveFieldMetadataItems'; import { objectMetadataItemSchema } from '@/object-metadata/validation-schemas/objectMetadataItemSchema'; import { isObjectMetadataReadOnly } from '@/object-record/read-only/utils/isObjectMetadataReadOnly'; @@ -28,7 +28,7 @@ export type SettingsDataModelObjectIdentifiersFormValues = z.infer< export type SettingsDataModelObjectIdentifiers = keyof SettingsDataModelObjectIdentifiersFormValues; type SettingsDataModelObjectIdentifiersFormProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; const LABEL_IDENTIFIER_FIELD_METADATA_ID: SettingsDataModelObjectIdentifiers = 'labelIdentifierFieldMetadataId'; diff --git a/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectSettingsFormCard.tsx b/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectSettingsFormCard.tsx index e2c7eff5c6..d16035a7ee 100644 --- a/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectSettingsFormCard.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/SettingsDataModelObjectSettingsFormCard.tsx @@ -1,7 +1,7 @@ import { styled } from '@linaria/react'; import { useMemo } from 'react'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem'; import { SettingsDataModelCardTitle } from '@/settings/data-model/components/SettingsDataModelCardTitle'; import { SettingsDataModelFieldPreviewWidget } from '@/settings/data-model/fields/preview/components/SettingsDataModelFieldPreviewWidget'; @@ -12,7 +12,7 @@ import { Card, CardContent } from 'twenty-ui/layout'; import { themeCssVariables } from 'twenty-ui/theme-constants'; type SettingsDataModelObjectSettingsFormCardProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; const StyledTopCardContentContainer = styled.div` diff --git a/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/__stories__/SettingsDataModelObjectAboutForm.stories.tsx b/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/__stories__/SettingsDataModelObjectAboutForm.stories.tsx index c4a8176554..e5a05fd7ec 100644 --- a/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/__stories__/SettingsDataModelObjectAboutForm.stories.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/objects/forms/components/__stories__/SettingsDataModelObjectAboutForm.stories.tsx @@ -6,11 +6,12 @@ import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorato import { SettingsDataModelObjectAboutForm } from '@/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm'; import { ComponentDecorator } from 'twenty-ui/testing'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); const StyledContainer = styled.div` flex: 1; diff --git a/packages/twenty-front/src/modules/settings/data-model/utils/__tests__/getFieldPreviewValueFromRecord.test.ts b/packages/twenty-front/src/modules/settings/data-model/utils/__tests__/getFieldPreviewValueFromRecord.test.ts index 245876de4c..5d7cb0ad93 100644 --- a/packages/twenty-front/src/modules/settings/data-model/utils/__tests__/getFieldPreviewValueFromRecord.test.ts +++ b/packages/twenty-front/src/modules/settings/data-model/utils/__tests__/getFieldPreviewValueFromRecord.test.ts @@ -1,14 +1,16 @@ import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getFieldPreviewValueFromRecord } from '@/settings/data-model/utils/getFieldPreviewValueFromRecord'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); -const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -); +const mockedPersonObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + ); describe('getFieldPreviewValueFromRecord', () => { describe('RELATION field', () => { diff --git a/packages/twenty-front/src/modules/settings/data-model/utils/getConflictingObjectMetadataItem.ts b/packages/twenty-front/src/modules/settings/data-model/utils/getConflictingObjectMetadataItem.ts index 7b41f6e3f2..59f502f32d 100644 --- a/packages/twenty-front/src/modules/settings/data-model/utils/getConflictingObjectMetadataItem.ts +++ b/packages/twenty-front/src/modules/settings/data-model/utils/getConflictingObjectMetadataItem.ts @@ -1,8 +1,8 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; type GetConflictingObjectMetadataItemParams = { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; nameSingular?: string; namePlural?: string; excludeObjectId?: string; @@ -13,7 +13,9 @@ export const getConflictingObjectMetadataItem = ({ nameSingular, namePlural, excludeObjectId, -}: GetConflictingObjectMetadataItemParams): ObjectMetadataItem | undefined => { +}: GetConflictingObjectMetadataItemParams): + | EnrichedObjectMetadataItem + | undefined => { if (!isDefined(nameSingular) && !isDefined(namePlural)) { return undefined; } diff --git a/packages/twenty-front/src/modules/settings/data-model/utils/getFieldIdentifierType.ts b/packages/twenty-front/src/modules/settings/data-model/utils/getFieldIdentifierType.ts index 8b97ef930d..612d5a36ae 100644 --- a/packages/twenty-front/src/modules/settings/data-model/utils/getFieldIdentifierType.ts +++ b/packages/twenty-front/src/modules/settings/data-model/utils/getFieldIdentifierType.ts @@ -1,11 +1,11 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField'; import { type FieldIdentifierType } from '@/settings/data-model/types/FieldIdentifierType'; export const getFieldIdentifierType = ( activeFieldMetadatItem: FieldMetadataItem, - activeObjectMetadataItem: ObjectMetadataItem, + activeObjectMetadataItem: EnrichedObjectMetadataItem, ): FieldIdentifierType | undefined => { const fieldIsLabelIdentifier = isLabelIdentifierField({ fieldMetadataItem: activeFieldMetadatItem, diff --git a/packages/twenty-front/src/modules/settings/data-model/validation-schemas/settingsDataModelObjectAboutFormSchema.ts b/packages/twenty-front/src/modules/settings/data-model/validation-schemas/settingsDataModelObjectAboutFormSchema.ts index afaa151e18..ec60508a31 100644 --- a/packages/twenty-front/src/modules/settings/data-model/validation-schemas/settingsDataModelObjectAboutFormSchema.ts +++ b/packages/twenty-front/src/modules/settings/data-model/validation-schemas/settingsDataModelObjectAboutFormSchema.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { t } from '@lingui/core/macro'; import { type ZodType, z } from 'zod'; import { type ReadonlyKeysArray } from '~/types/ReadonlyKeysArray'; @@ -7,7 +7,7 @@ import { camelCaseStringSchema } from '~/utils/validation-schemas/camelCaseStrin type ZodTypeSettingsDataModelFormFields = ZodType< Pick< - ObjectMetadataItem, + EnrichedObjectMetadataItem, | 'labelSingular' | 'labelPlural' | 'description' @@ -34,7 +34,7 @@ export const settingsDataModelObjectAboutFormSchema = const nameAreDifferent = nameSingular.toLowerCase() !== namePlural.toLowerCase(); if (!nameAreDifferent) { - const nameFields: ReadonlyKeysArray = [ + const nameFields: ReadonlyKeysArray = [ 'nameSingular', 'namePlural', ]; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/components/SettingsRolePermissions.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/SettingsRolePermissions.tsx index e5d57ffd8e..b11fd3abc9 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/components/SettingsRolePermissions.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/SettingsRolePermissions.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SettingsRolePermissionsObjectLevelSection } from '@/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSection'; import { SettingsRolePermissionsObjectsSection } from '@/settings/roles/role-permissions/objects-permissions/components/SettingsRolePermissionsObjectsSection'; import { SettingsRolePermissionsSettingsSection } from '@/settings/roles/role-permissions/permission-flags/components/SettingsRolePermissionsSettingsSection'; @@ -16,7 +16,7 @@ type SettingsRolePermissionsProps = { roleId: string; isEditable: boolean; fromAgentId?: string; - objectMetadataItemsFromMarketplaceApp?: ObjectMetadataItem[]; + objectMetadataItemsFromMarketplaceApp?: EnrichedObjectMetadataItem[]; }; export const SettingsRolePermissions = ({ diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCell.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCell.tsx index b963629c17..128695cea0 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCell.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCell.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { objectPermissionKeyToHumanReadable } from '@/settings/roles/role-permissions/object-level-permissions/utils/objectPermissionKeyToHumanReadableText'; import { PermissionIcon } from '@/settings/roles/role-permissions/objects-permissions/components/PermissionIcon'; import { SETTINGS_ROLE_OBJECT_LEVEL_PERMISSION_TO_ROLE_OBJECT_PERMISSION_MAPPING } from '@/settings/roles/role-permissions/objects-permissions/constants/SettingsRoleObjectLevelPermissionToRoleObjectPermissionMapping'; @@ -15,7 +15,7 @@ const StyledContainer = styled.div` `; type SettingsRolePermissionsObjectLevelOverrideCellProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; objectPermissionKey: SettingsRoleObjectPermissionKey; roleId: string; objectLabel: string; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCellContainer.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCellContainer.tsx index 6489267a5b..296e6e68ba 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCellContainer.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCellContainer.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SETTINGS_ROLE_OBJECT_LEVEL_PERMISSION_TO_ROLE_OBJECT_PERMISSION_MAPPING } from '@/settings/roles/role-permissions/objects-permissions/constants/SettingsRoleObjectLevelPermissionToRoleObjectPermissionMapping'; import { type SettingsRoleObjectPermissionKey } from '@/settings/roles/role-permissions/objects-permissions/constants/SettingsRoleObjectPermissionIconConfig'; import { styled } from '@linaria/react'; @@ -11,7 +11,7 @@ const StyledSettingsRolePermissionsObjectLevelOverrideCell = styled.div` `; type SettingsRolePermissionsObjectLevelOverrideCellContainerProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; roleId: string; objectLabel: string; }; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSection.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSection.tsx index c7dc179f94..082e086474 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSection.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSection.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SettingsRolePermissionsObjectLevelTableHeader } from '@/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableHeader'; import { SettingsRolePermissionsObjectLevelTableRow } from '@/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableRow'; import { useFilterObjectMetadataItemsWithPermissionOverride } from '@/settings/roles/role-permissions/object-level-permissions/hooks/useFilterObjectWithPermissionOverride'; @@ -37,7 +37,7 @@ type SettingsRolePermissionsObjectLevelSectionProps = { roleId: string; isEditable: boolean; fromAgentId?: string; - objectMetadataItemsFromMarketplaceApp?: ObjectMetadataItem[]; + objectMetadataItemsFromMarketplaceApp?: EnrichedObjectMetadataItem[]; }; export const SettingsRolePermissionsObjectLevelSection = ({ diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx index 128ac13018..377ca621b5 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { useObjectPermissionDerivedStates } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useObjectPermissionDerivedStates'; import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; @@ -7,7 +7,7 @@ import { useLingui } from '@lingui/react/macro'; type SettingsRolePermissionsObjectLevelSeeFieldsValueForObjectProps = { roleId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const SettingsRolePermissionsObjectLevelSeeFieldsValueForObject = ({ diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableRow.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableRow.tsx index f85729fac9..a678cc6ca8 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableRow.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableRow.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SettingsRolePermissionsObjectLevelOverrideCellContainer } from '@/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelOverrideCellContainer'; import { SettingsRolePermissionsObjectLevelSeeFieldsValueForObject } from '@/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelSeeFieldsValueForObject'; import { SettingsRolePermissionsObjectLevelTableRowOptionsDropdown } from '@/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelTableRowOptionsDropdown'; @@ -20,7 +20,7 @@ const StyledNameLabel = styled.div` `; type SettingsRolePermissionsObjectLevelTableRowProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; roleId: string; isEditable?: boolean; fromAgentId?: string; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelUpdateFieldsValueForObject.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelUpdateFieldsValueForObject.tsx index ccaae9a530..75467f52e9 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelUpdateFieldsValueForObject.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/components/SettingsRolePermissionsObjectLevelUpdateFieldsValueForObject.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { filterUserFacingFieldMetadataItems } from '@/object-metadata/utils/filterUserFacingFieldMetadataItems'; import { useObjectPermissionDerivedStates } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useObjectPermissionDerivedStates'; import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; @@ -7,7 +7,7 @@ import { useLingui } from '@lingui/react/macro'; type SettingsRolePermissionsObjectLevelUpdateFieldsValueForObjectProps = { roleId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const SettingsRolePermissionsObjectLevelUpdateFieldsValueForObject = ({ diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTable.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTable.tsx index c296f81fa1..ae4e95cfe9 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTable.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTable.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { filterUserFacingFieldMetadataItems } from '@/object-metadata/utils/filterUserFacingFieldMetadataItems'; import { SettingsRolePermissionsObjectLevelObjectFieldPermissionTableAllHeaderRow } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableAllHeaderRow'; import { TableRow } from '@/ui/layout/table/components/TableRow'; @@ -36,7 +36,7 @@ const StyledSearchInputContainer = styled.div` export type SettingsRolePermissionsObjectLevelObjectFieldPermissionTableProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; roleId: string; }; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableAllHeaderRow.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableAllHeaderRow.tsx index 87a9c0fcdb..7730c76db9 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableAllHeaderRow.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableAllHeaderRow.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FIELD_LEVEL_PERMISSION_TABLE_GRID_TEMPLATE_COLUMNS } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/constants/FieldLevelPermissionTableGridTemplateColumns'; import { useObjectPermissionDerivedStates } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useObjectPermissionDerivedStates'; import { useRemoveReadOverrideOnAllFieldsOfObject } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveReadOverrideOnAllFieldsOfObject'; @@ -37,7 +37,7 @@ export const SettingsRolePermissionsObjectLevelObjectFieldPermissionTableAllHead objectMetadataItem, }: { roleId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const { t } = useLingui(); diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableRow.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableRow.tsx index 2bd52a2e8d..8b60ec9881 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableRow.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/components/SettingsRolePermissionsObjectLevelObjectFieldPermissionTableRow.tsx @@ -1,6 +1,6 @@ import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMetadata'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RELATION_TYPES } from '@/settings/data-model/constants/RelationTypes'; import { SettingsObjectFieldDataType } from '@/settings/data-model/object-details/components/SettingsObjectFieldDataType'; import { type SettingsFieldType } from '@/settings/data-model/types/SettingsFieldType'; @@ -33,7 +33,7 @@ const StyledNameLabel = styled.div` type SettingsRolePermissionsObjectLevelObjectFieldPermissionTableRowProps = { fieldMetadataItem: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; fieldPermissions: FieldPermission[]; roleId: string; isLabelIdentifier: boolean; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveReadOverrideOnAllFieldsOfObject.ts b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveReadOverrideOnAllFieldsOfObject.ts index 7970d0a5d4..edb70bf89c 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveReadOverrideOnAllFieldsOfObject.ts +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveReadOverrideOnAllFieldsOfObject.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useUpsertFieldPermissionInDraftRole } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useUpsertFieldPermissionInDraftRole'; import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue'; @@ -17,7 +17,7 @@ export const useRemoveReadOverrideOnAllFieldsOfObject = ({ useUpsertFieldPermissionInDraftRole(roleId); const removeReadOverrideOnAllFieldsOfObject = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { const existingFieldPermissionsForThisObject = settingsDraftRole.fieldPermissions?.filter( diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveUpdateOverrideOnAllFieldsOfObject.ts b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveUpdateOverrideOnAllFieldsOfObject.ts index 809f90d735..73a168a54b 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveUpdateOverrideOnAllFieldsOfObject.ts +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRemoveUpdateOverrideOnAllFieldsOfObject.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useUpsertFieldPermissionInDraftRole } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useUpsertFieldPermissionInDraftRole'; import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue'; @@ -17,7 +17,7 @@ export const useRemoveUpdateOverrideOnAllFieldsOfObject = ({ useUpsertFieldPermissionInDraftRole(roleId); const removeUpdateOverrideOnAllFieldsOfObject = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { const existingFieldPermissionsForThisObject = settingsDraftRole.fieldPermissions?.filter( diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRestrictReadOnAllFieldsOfObject.ts b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRestrictReadOnAllFieldsOfObject.ts index f4b4b32192..5f3097ed6e 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRestrictReadOnAllFieldsOfObject.ts +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRestrictReadOnAllFieldsOfObject.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { filterUserFacingFieldMetadataItems } from '@/object-metadata/utils/filterUserFacingFieldMetadataItems'; import { useUpsertFieldPermissionInDraftRole } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useUpsertFieldPermissionInDraftRole'; import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; @@ -20,7 +20,7 @@ export const useRestrictReadOnAllFieldsOfObject = ({ useUpsertFieldPermissionInDraftRole(roleId); const restrictReadOnAllFieldsOfObject = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { const restrictableFieldMetadataItems = objectMetadataItem.fields.filter( filterUserFacingFieldMetadataItems, diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRestrictUpdateOnAllFieldsOfObject.ts b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRestrictUpdateOnAllFieldsOfObject.ts index 98ec96664e..75d4e388ee 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRestrictUpdateOnAllFieldsOfObject.ts +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useRestrictUpdateOnAllFieldsOfObject.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { filterUserFacingFieldMetadataItems } from '@/object-metadata/utils/filterUserFacingFieldMetadataItems'; import { useUpsertFieldPermissionInDraftRole } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useUpsertFieldPermissionInDraftRole'; import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; @@ -20,7 +20,7 @@ export const useRestrictUpdateOnAllFieldsOfObject = ({ useUpsertFieldPermissionInDraftRole(roleId); const restrictUpdateOnAllFieldsOfObject = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { const existingFieldPermissionsForThisObject = settingsDraftRole.fieldPermissions?.filter( diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/hooks/useFilterObjectWithPermissionOverride.ts b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/hooks/useFilterObjectWithPermissionOverride.ts index 3f522eb4ec..40a2962306 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/hooks/useFilterObjectWithPermissionOverride.ts +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/hooks/useFilterObjectWithPermissionOverride.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useGetObjectPermissionDerivedStates } from '@/settings/roles/role-permissions/object-level-permissions/field-permissions/hooks/useGetObjectPermissionDerivedStates'; import { useCallback } from 'react'; @@ -13,7 +13,7 @@ export const useFilterObjectMetadataItemsWithPermissionOverride = ({ }); const filterObjectMetadataItemsWithPermissionOverride = useCallback( - (objectMetadataItem: ObjectMetadataItem) => { + (objectMetadataItem: EnrichedObjectMetadataItem) => { const { objectHasOverrideOnObjectPermissions, objectHasNoOverrideButFieldPermissionsShouldBeTakenIntoAccount, diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/object-form/components/SettingsRolePermissionsObjectLevelObjectFormObjectLevel.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/object-form/components/SettingsRolePermissionsObjectLevelObjectFormObjectLevel.tsx index 1f9a975b4c..eec137426c 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/object-form/components/SettingsRolePermissionsObjectLevelObjectFormObjectLevel.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/object-form/components/SettingsRolePermissionsObjectLevelObjectFormObjectLevel.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SettingsRolePermissionsObjectLevelObjectFormObjectLevelTableHeader } from '@/settings/roles/role-permissions/object-level-permissions/object-form/components/SettingsRolePermissionsObjectLevelObjectFormObjectLevelTableHeader'; import { SettingsRolePermissionsObjectLevelObjectFormObjectLevelTableRow } from '@/settings/roles/role-permissions/object-level-permissions/object-form/components/SettingsRolePermissionsObjectLevelObjectFormObjectLevelTableRow'; import { type SettingsRolePermissionsObjectLevelPermission } from '@/settings/roles/role-permissions/objects-permissions/types/SettingsRolePermissionsObjectPermission'; @@ -21,7 +21,7 @@ const StyledTableRows = styled.div` type SettingsRolePermissionsObjectLevelObjectFormObjectLevelProps = { roleId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const SettingsRolePermissionsObjectLevelObjectFormObjectLevel = ({ diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilder.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilder.tsx index e21daa6b69..a64fcb26de 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilder.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilder.tsx @@ -1,6 +1,6 @@ /* @license Enterprise */ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordFilterGroupsComponentInstanceContext } from '@/object-record/record-filter-group/states/context/RecordFilterGroupsComponentInstanceContext'; import { RecordFiltersComponentInstanceContext } from '@/object-record/record-filter/states/context/RecordFiltersComponentInstanceContext'; import { SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderContent } from '@/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderContent'; @@ -8,7 +8,7 @@ import { SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderCon type SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderProps = { roleId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilder = diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderContent.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderContent.tsx index d0a4fbe1cb..3122b17c3e 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderContent.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderContent.tsx @@ -8,7 +8,7 @@ import { Button } from 'twenty-ui/input'; import { themeCssVariables } from 'twenty-ui/theme-constants'; import { CommandMenuButton } from '@/command-menu/components/CommandMenuButton'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useChildRecordFiltersAndRecordFilterGroups } from '@/object-record/advanced-filter/hooks/useChildRecordFiltersAndRecordFilterGroups'; import { useSetRecordFilterUsedInAdvancedFilterDropdownRow } from '@/object-record/advanced-filter/hooks/useSetRecordFilterUsedInAdvancedFilterDropdownRow'; import { AdvancedFilterContext } from '@/object-record/advanced-filter/states/context/AdvancedFilterContext'; @@ -49,7 +49,7 @@ const StyledActionButtonWrapper = styled.div` type SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderContentProps = { roleId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilderContent = diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx index b555ca6d41..d275a2c91c 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelSection.tsx @@ -6,7 +6,7 @@ import { H2Title, IconArrowUp, IconLock } from 'twenty-ui/display'; import { Card, Section } from 'twenty-ui/layout'; import { billingState } from '@/client-config/states/billingState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SettingsOptionCardContentButton } from '@/settings/components/SettingsOptions/SettingsOptionCardContentButton'; import { SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilder } from '@/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFilterBuilder'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -37,7 +37,7 @@ const StyledPillContainer = styled.span` `; type SettingsRolePermissionsObjectLevelRecordLevelSectionProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; roleId: string; hasOrganizationPlan: boolean; }; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionFilterActions.ts b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionFilterActions.ts index b863e0b43d..a1cc16d1af 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionFilterActions.ts +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionFilterActions.ts @@ -9,7 +9,7 @@ import { getFilterTypeFromFieldType, isDefined } from 'twenty-shared/utils'; import { v4 } from 'uuid'; import { availableFieldMetadataItemsForFilterFamilySelector } from '@/object-metadata/states/availableFieldMetadataItemsForFilterFamilySelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useChildRecordFiltersAndRecordFilterGroups } from '@/object-record/advanced-filter/hooks/useChildRecordFiltersAndRecordFilterGroups'; import { useGetDefaultFieldMetadataItemForFilter } from '@/object-record/advanced-filter/hooks/useGetDefaultFieldMetadataItemForFilter'; import { useSetRecordFilterUsedInAdvancedFilterDropdownRow } from '@/object-record/advanced-filter/hooks/useSetRecordFilterUsedInAdvancedFilterDropdownRow'; @@ -27,7 +27,7 @@ import { useAtomComponentSelectorValue } from '@/ui/utilities/state/jotai/hooks/ import { useAtomFamilySelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilySelectorValue'; type UseRecordLevelPermissionFilterActionsProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; export const useRecordLevelPermissionFilterActions = ({ diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionFilterInitialization.ts b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionFilterInitialization.ts index ff0cdc04ac..3928167cbf 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionFilterInitialization.ts +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionFilterInitialization.ts @@ -4,7 +4,7 @@ import { useEffect, useMemo, useState } from 'react'; import { isDefined } from 'twenty-shared/utils'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { @@ -15,7 +15,7 @@ import { type RoleWithPartialMembers } from '@/settings/roles/types/RoleWithPart type UseRecordLevelPermissionFilterInitializationProps = { roleId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; settingsDraftRole: RoleWithPartialMembers; filterableFieldMetadataItems: FieldMetadataItem[]; setCurrentRecordFilters: (filters: RecordFilter[]) => void; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionSyncToDraftRole.ts b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionSyncToDraftRole.ts index 6767b62124..d322f9fe3c 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionSyncToDraftRole.ts +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/hooks/useRecordLevelPermissionSyncToDraftRole.ts @@ -3,7 +3,7 @@ import { useCallback, useEffect } from 'react'; import { isDefined } from 'twenty-shared/utils'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { @@ -15,7 +15,7 @@ import { useSetAtomFamilyState } from '@/ui/utilities/state/jotai/hooks/useSetAt type UseRecordLevelPermissionSyncToDraftRoleProps = { roleId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; currentRecordFilters: RecordFilter[]; currentRecordFilterGroups: RecordFilterGroup[]; hasInitialized: boolean; diff --git a/packages/twenty-front/src/modules/side-panel/components/SidePanelContextRecordChipAvatars.tsx b/packages/twenty-front/src/modules/side-panel/components/SidePanelContextRecordChipAvatars.tsx index 60d314c704..b181a1b9d3 100644 --- a/packages/twenty-front/src/modules/side-panel/components/SidePanelContextRecordChipAvatars.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/SidePanelContextRecordChipAvatars.tsx @@ -1,5 +1,5 @@ import { useGetStandardObjectIcon } from '@/object-metadata/hooks/useGetStandardObjectIcon'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useRecordChipData } from '@/object-record/hooks/useRecordChipData'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { styled } from '@linaria/react'; @@ -27,7 +27,7 @@ export const SidePanelContextRecordChipAvatars = ({ objectMetadataItem, record, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; record: ObjectRecord; }) => { const { theme } = useContext(ThemeContext); diff --git a/packages/twenty-front/src/modules/side-panel/components/__stories__/SidePanelContextRecordChip.stories.tsx b/packages/twenty-front/src/modules/side-panel/components/__stories__/SidePanelContextRecordChip.stories.tsx index c5e66f3fa7..f73d666055 100644 --- a/packages/twenty-front/src/modules/side-panel/components/__stories__/SidePanelContextRecordChip.stories.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/__stories__/SidePanelContextRecordChip.stories.tsx @@ -14,7 +14,7 @@ import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { ComponentDecorator } from 'twenty-ui/testing'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; import { mockedCompanyRecords } from '~/testing/mock-data/generated/data/companies/mock-companies-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const FIND_MANY_COMPANIES = gql` query FindManyCompanies( @@ -98,9 +98,10 @@ const FIND_MANY_COMPANIES = gql` } `; -const companyMockObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const companyMockObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'company', + ); const companyMock = mockedCompanyRecords[0]; diff --git a/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useNavigateSidePanel.test.tsx b/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useNavigateSidePanel.test.tsx index 5483aec1ba..5844862695 100644 --- a/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useNavigateSidePanel.test.tsx +++ b/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useNavigateSidePanel.test.tsx @@ -11,15 +11,16 @@ import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType import { SidePanelPages } from 'twenty-shared/types'; import { Icon123, useIcons } from 'twenty-ui/display'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('mocked-uuid'), })); -const personMockObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -)!; +const personMockObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + )!; const wrapper = getJestMetadataAndApolloMocksAndCommandMenuWrapper({ apolloMocks: [], diff --git a/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenCalendarEventInSidePanel.test.tsx b/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenCalendarEventInSidePanel.test.tsx index 21cc918d3d..7088f97a04 100644 --- a/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenCalendarEventInSidePanel.test.tsx +++ b/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenCalendarEventInSidePanel.test.tsx @@ -9,7 +9,7 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use import { SidePanelPages } from 'twenty-shared/types'; import { IconCalendarEvent } from 'twenty-ui/display'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('mocked-uuid'), @@ -22,9 +22,10 @@ jest.mock('@/side-panel/hooks/useNavigateSidePanel', () => ({ }), })); -const personMockObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -)!; +const personMockObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + )!; const wrapper = getJestMetadataAndApolloMocksAndCommandMenuWrapper({ apolloMocks: [], diff --git a/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenEmailThreadInSidePanel.test.tsx b/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenEmailThreadInSidePanel.test.tsx index 4f72fa53ef..c0fe70d67c 100644 --- a/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenEmailThreadInSidePanel.test.tsx +++ b/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenEmailThreadInSidePanel.test.tsx @@ -9,7 +9,7 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use import { SidePanelPages } from 'twenty-shared/types'; import { IconMail } from 'twenty-ui/display'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('mocked-uuid'), @@ -22,9 +22,10 @@ jest.mock('@/side-panel/hooks/useNavigateSidePanel', () => ({ }), })); -const personMockObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -)!; +const personMockObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + )!; const wrapper = getJestMetadataAndApolloMocksAndCommandMenuWrapper({ apolloMocks: [], diff --git a/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenRecordInSidePanel.test.tsx b/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenRecordInSidePanel.test.tsx index 6d95cbce1b..2e15ec1b59 100644 --- a/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenRecordInSidePanel.test.tsx +++ b/packages/twenty-front/src/modules/side-panel/hooks/__tests__/useOpenRecordInSidePanel.test.tsx @@ -17,7 +17,7 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use import { SidePanelPages } from 'twenty-shared/types'; import { useIcons } from 'twenty-ui/display'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('mocked-uuid'), @@ -40,9 +40,10 @@ jest.mock( }), ); -const personMockObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -)!; +const personMockObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === 'person', + )!; const wrapper = getJestMetadataAndApolloMocksAndCommandMenuWrapper({ apolloMocks: [], diff --git a/packages/twenty-front/src/modules/side-panel/pages/message-thread/hooks/__tests__/useEmailThreadInSidePanel.test.tsx b/packages/twenty-front/src/modules/side-panel/pages/message-thread/hooks/__tests__/useEmailThreadInSidePanel.test.tsx index d150cbc1e7..bfbab3ba1f 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/message-thread/hooks/__tests__/useEmailThreadInSidePanel.test.tsx +++ b/packages/twenty-front/src/modules/side-panel/pages/message-thread/hooks/__tests__/useEmailThreadInSidePanel.test.tsx @@ -13,7 +13,7 @@ import { import { MessageParticipantRole } from 'twenty-shared/types'; import { generateMockRecordNode } from '~/testing/utils/generateMockRecordNode'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; const messageMetadataItem = getMockObjectMetadataItemOrThrow('message'); @@ -27,14 +27,14 @@ const messageOperationSignature = const findManyMessagesQuery = generateFindManyRecordsQuery({ objectMetadataItem: messageMetadataItem, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), recordGqlFields: messageOperationSignature.fields, objectPermissionsByObjectMetadataId: {}, }); const findManyMessageParticipantsQuery = generateFindManyRecordsQuery({ objectMetadataItem: messageParticipantMetadataItem, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), recordGqlFields: { id: true, role: true, diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx b/packages/twenty-front/src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx index 29587ba95b..85a7cc5457 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/components/ChartFiltersSettings.tsx @@ -5,7 +5,7 @@ import { type ChartWidget } from '@/side-panel/pages/page-layout/types/ChartWidg import { type ChartWidgetConfiguration } from '@/side-panel/pages/page-layout/types/ChartWidgetConfiguration'; import { getChartFiltersSettingsInstanceId } from '@/side-panel/pages/page-layout/utils/getChartFiltersSettingsInstanceId'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { AdvancedFilterSidePanelContainer } from '@/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelContainer'; import { RecordFilterGroupsComponentInstanceContext } from '@/object-record/record-filter-group/states/context/RecordFilterGroupsComponentInstanceContext'; import { currentRecordFilterGroupsComponentState } from '@/object-record/record-filter-group/states/currentRecordFilterGroupsComponentState'; @@ -28,7 +28,7 @@ const StyledChartFiltersPageContainer = styled.div` `; export type ChartFiltersSettingsProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; widget: ChartWidget; }; diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/__tests__/useChartSettingsValues.test.tsx b/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/__tests__/useChartSettingsValues.test.tsx index f8b49f243c..5b7dd7ac02 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/__tests__/useChartSettingsValues.test.tsx +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/__tests__/useChartSettingsValues.test.tsx @@ -4,7 +4,7 @@ import { Provider as JotaiProvider } from 'jotai'; import { type ChartConfiguration } from '@/side-panel/pages/page-layout/types/ChartConfiguration'; import { CHART_CONFIGURATION_SETTING_IDS } from '@/side-panel/pages/page-layout/types/ChartConfigurationSettingIds'; import { type TypedBarChartConfiguration } from '@/side-panel/pages/page-layout/types/TypedBarChartConfiguration'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { setTestObjectMetadataItemsInMetadataStore } from '~/testing/utils/setTestObjectMetadataItemsInMetadataStore'; import { AggregateOperations, @@ -18,7 +18,7 @@ import { import { useChartSettingsValues } from '@/side-panel/pages/page-layout/hooks/useChartSettingsValues'; import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore'; -const mockObjectMetadataItem: ObjectMetadataItem = { +const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'obj-1', nameSingular: 'company', namePlural: 'companies', @@ -58,7 +58,7 @@ const mockObjectMetadataItem: ObjectMetadataItem = { ], }, ], -} as ObjectMetadataItem; +} as EnrichedObjectMetadataItem; const buildBarChartConfiguration = ( overrides: Partial, diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/buildChartGroupByFieldConfigUpdate.test.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/buildChartGroupByFieldConfigUpdate.test.ts index 38720b12ca..6e89df3eaf 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/buildChartGroupByFieldConfigUpdate.test.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/buildChartGroupByFieldConfigUpdate.test.ts @@ -2,7 +2,7 @@ import { type TypedBarChartConfiguration } from '@/side-panel/pages/page-layout/ import { type TypedLineChartConfiguration } from '@/side-panel/pages/page-layout/types/TypedLineChartConfiguration'; import { type TypedPieChartConfiguration } from '@/side-panel/pages/page-layout/types/TypedPieChartConfiguration'; import { buildChartGroupByFieldConfigUpdate } from '@/side-panel/pages/page-layout/utils/buildChartGroupByFieldConfigUpdate'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FieldMetadataType, ObjectRecordGroupByDateGranularity, @@ -14,7 +14,7 @@ import { } from '~/generated-metadata/graphql'; describe('buildChartGroupByFieldConfigUpdate', () => { - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'object-id', nameSingular: 'opportunity', namePlural: 'opportunities', diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/convertAggregateOperationForDateField.test.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/convertAggregateOperationForDateField.test.ts index 26385be5df..7e79a36b3b 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/convertAggregateOperationForDateField.test.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/convertAggregateOperationForDateField.test.ts @@ -1,17 +1,17 @@ import { type ChartConfiguration } from '@/side-panel/pages/page-layout/types/ChartConfiguration'; import { convertAggregateOperationForDateField } from '@/side-panel/pages/page-layout/utils/convertAggregateOperationForDateField'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations'; import { FieldMetadataType } from 'twenty-shared/types'; import { TEST_BAR_CHART_CONFIGURATION } from '~/testing/mock-data/widget-configurations'; const createMockObjectMetadataItem = ( fields: { id: string; type: FieldMetadataType }[], -): ObjectMetadataItem => +): EnrichedObjectMetadataItem => ({ id: 'object-1', fields: fields.map((f) => ({ ...f, name: 'field' })), - }) as ObjectMetadataItem; + }) as EnrichedObjectMetadataItem; describe('convertAggregateOperationForDateField', () => { it('returns COUNT when date field uses MIN operation', () => { diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/isFieldOrNestedFieldDateKind.test.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/isFieldOrNestedFieldDateKind.test.ts index c3c2e6dd76..3ad83f3e7d 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/isFieldOrNestedFieldDateKind.test.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/isFieldOrNestedFieldDateKind.test.ts @@ -1,5 +1,5 @@ import { isFieldOrRelationNestedFieldDateKind } from '@/side-panel/pages/page-layout/utils/isFieldOrNestedFieldDateKind'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { FieldMetadataType } from 'twenty-shared/types'; describe('isFieldOrNestedFieldDateKind', () => { @@ -7,7 +7,7 @@ describe('isFieldOrNestedFieldDateKind', () => { const result = isFieldOrRelationNestedFieldDateKind({ fieldId: null, subFieldName: null, - objectMetadataItem: {} as ObjectMetadataItem, + objectMetadataItem: {} as EnrichedObjectMetadataItem, }); expect(result).toBe(false); @@ -16,7 +16,7 @@ describe('isFieldOrNestedFieldDateKind', () => { it('returns true for a DATE type field', () => { const objectMetadataItem = { fields: [{ id: 'date-field-id', type: FieldMetadataType.DATE }], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const result = isFieldOrRelationNestedFieldDateKind({ fieldId: 'date-field-id', @@ -30,7 +30,7 @@ describe('isFieldOrNestedFieldDateKind', () => { it('returns false for a non-date type field', () => { const objectMetadataItem = { fields: [{ id: 'text-field-id', type: FieldMetadataType.TEXT }], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const result = isFieldOrRelationNestedFieldDateKind({ fieldId: 'text-field-id', @@ -50,7 +50,7 @@ describe('isFieldOrNestedFieldDateKind', () => { relation: { targetObjectMetadata: { id: 'company-id' } }, }, ], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const companyObjectMetadataItem = { id: 'company-id', @@ -61,7 +61,7 @@ describe('isFieldOrNestedFieldDateKind', () => { type: FieldMetadataType.DATE, }, ], - } as ObjectMetadataItem; + } as EnrichedObjectMetadataItem; const result = isFieldOrRelationNestedFieldDateKind({ fieldId: 'relation-field-id', diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts index 7309b76ba7..9514882a71 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts @@ -2,7 +2,7 @@ import { type ChartConfiguration } from '@/side-panel/pages/page-layout/types/Ch import { CHART_CONFIGURATION_SETTING_IDS } from '@/side-panel/pages/page-layout/types/ChartConfigurationSettingIds'; import { type ChartSettingsItem } from '@/side-panel/pages/page-layout/types/ChartSettingsGroup'; import { shouldHideChartSetting } from '@/side-panel/pages/page-layout/utils/shouldHideChartSetting'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { msg } from '@lingui/core/macro'; import { FieldMetadataType } from 'twenty-shared/types'; import { IconChartBar } from 'twenty-ui/display'; @@ -205,7 +205,7 @@ describe('shouldHideChartSetting', () => { isNumberInput: false, }; - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'object-id', nameSingular: 'opportunity', namePlural: 'opportunities', @@ -461,7 +461,7 @@ describe('shouldHideChartSetting', () => { }); it('should show when group by field is a relation date subfield', () => { - const objectMetadataItemWithRelation: ObjectMetadataItem = { + const objectMetadataItemWithRelation: EnrichedObjectMetadataItem = { ...mockObjectMetadataItem, fields: [...mockObjectMetadataItem.fields, relationField], } as any; @@ -503,7 +503,7 @@ describe('shouldHideChartSetting', () => { isNumberInput: false, }; - const mockObjectMetadataItem: ObjectMetadataItem = { + const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'object-id', nameSingular: 'opportunity', namePlural: 'opportunities', diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/buildChartGroupByFieldConfigUpdate.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/buildChartGroupByFieldConfigUpdate.ts index 2eed1c8c8e..750e63d74a 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/buildChartGroupByFieldConfigUpdate.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/buildChartGroupByFieldConfigUpdate.ts @@ -2,7 +2,7 @@ import { type ChartConfiguration } from '@/side-panel/pages/page-layout/types/Ch import { getChartDefaultOrderByForFieldType } from '@/side-panel/pages/page-layout/utils/getChartDefaultOrderByForFieldType'; import { isFieldOrRelationNestedFieldDateKind } from '@/side-panel/pages/page-layout/utils/isFieldOrNestedFieldDateKind'; import { isWidgetConfigurationOfType } from '@/side-panel/pages/page-layout/utils/isWidgetConfigurationOfType'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { ObjectRecordGroupByDateGranularity } from 'twenty-shared/types'; import { isDefined, isFieldMetadataArrayKind } from 'twenty-shared/utils'; import { BarChartGroupMode, GraphOrderBy } from '~/generated-metadata/graphql'; @@ -13,8 +13,8 @@ type BuildChartGroupByFieldConfigUpdateArgs = { subFieldNameKey: keyof T; fieldId: string | null; subFieldName: string | null; - objectMetadataItem?: ObjectMetadataItem; - objectMetadataItems?: ObjectMetadataItem[]; + objectMetadataItem?: EnrichedObjectMetadataItem; + objectMetadataItems?: EnrichedObjectMetadataItem[]; }; export const buildChartGroupByFieldConfigUpdate = < diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/convertAggregateOperationForDateField.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/convertAggregateOperationForDateField.ts index 8f9328c374..9d39c1ea3f 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/convertAggregateOperationForDateField.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/convertAggregateOperationForDateField.ts @@ -1,11 +1,11 @@ import { type ChartConfiguration } from '@/side-panel/pages/page-layout/types/ChartConfiguration'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations'; import { isDefined, isFieldMetadataDateKind } from 'twenty-shared/utils'; export const convertAggregateOperationForDateField = ( configuration: ChartConfiguration, - objectMetadataItem: ObjectMetadataItem | undefined, + objectMetadataItem: EnrichedObjectMetadataItem | undefined, ): AggregateOperations | undefined => { if (!isDefined(objectMetadataItem)) { return undefined; diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts index c4be5e12e4..509de4ae29 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/getFieldLabelWithSubField.ts @@ -1,6 +1,6 @@ import { getRelationFieldLabel } from '@/side-panel/pages/page-layout/utils/getRelationFieldLabel'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getCompositeSubFieldLabel } from '@/object-record/object-filter-dropdown/utils/getCompositeSubFieldLabel'; import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType'; import { isFieldRelation } from '@/object-record/record-field/ui/types/guards/isFieldRelation'; @@ -16,7 +16,7 @@ export const getFieldLabelWithSubField = ({ }: { field: FieldMetadataItem | undefined; subFieldName?: CompositeFieldSubFieldName | string; - objectMetadataItems?: ObjectMetadataItem[]; + objectMetadataItems?: EnrichedObjectMetadataItem[]; }): string => { if (!isDefined(field?.label)) { return t`Field`; diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/getRelationFieldLabel.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/getRelationFieldLabel.ts index 04a639f9b8..bc80bd899e 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/getRelationFieldLabel.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/getRelationFieldLabel.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getCompositeSubFieldLabel } from '@/object-record/object-filter-dropdown/utils/getCompositeSubFieldLabel'; import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType'; import { type CompositeFieldType } from '@/settings/data-model/types/CompositeFieldType'; @@ -9,7 +9,7 @@ import { isDefined } from 'twenty-shared/utils'; export const getRelationFieldLabel = ( field: FieldMetadataItem, subFieldName: string, - objectMetadataItems: ObjectMetadataItem[] | undefined, + objectMetadataItems: EnrichedObjectMetadataItem[] | undefined, ): string => { if (!isDefined(objectMetadataItems)) { return field.label; diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/isFieldOrNestedFieldDateKind.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/isFieldOrNestedFieldDateKind.ts index 9a2896cc88..1dd3a9c417 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/isFieldOrNestedFieldDateKind.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/isFieldOrNestedFieldDateKind.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isFieldRelation } from '@/object-record/record-field/ui/types/guards/isFieldRelation'; import { isRelationNestedFieldDateKind } from '@/page-layout/widgets/graph/utils/isRelationNestedFieldDateKind'; import { isDefined, isFieldMetadataDateKind } from 'twenty-shared/utils'; @@ -11,8 +11,8 @@ export const isFieldOrRelationNestedFieldDateKind = ({ }: { fieldId: string | null; subFieldName: string | null; - objectMetadataItem?: ObjectMetadataItem; - objectMetadataItems?: ObjectMetadataItem[]; + objectMetadataItem?: EnrichedObjectMetadataItem; + objectMetadataItems?: EnrichedObjectMetadataItem[]; }): boolean => { if (!isDefined(fieldId) || !isDefined(objectMetadataItem)) { return false; diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/shouldHideChartSetting.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/shouldHideChartSetting.ts index b587cc344d..7e97a3964b 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/shouldHideChartSetting.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/utils/shouldHideChartSetting.ts @@ -2,7 +2,7 @@ import { type ChartConfiguration } from '@/side-panel/pages/page-layout/types/Ch import { CHART_CONFIGURATION_SETTING_IDS } from '@/side-panel/pages/page-layout/types/ChartConfigurationSettingIds'; import { type ChartSettingsItem } from '@/side-panel/pages/page-layout/types/ChartSettingsGroup'; import { isWidgetConfigurationOfType } from '@/side-panel/pages/page-layout/utils/isWidgetConfigurationOfType'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isFieldRelation } from '@/object-record/record-field/ui/types/guards/isFieldRelation'; import { isRelationNestedFieldDateKind } from '@/page-layout/widgets/graph/utils/isRelationNestedFieldDateKind'; import { isNonEmptyString } from '@sniptt/guards'; @@ -15,8 +15,8 @@ import { const shouldHideDateGranularityBasedOnFieldType = ( fieldMetadataId: string | undefined | null, subFieldName: string | undefined | null, - objectMetadataItem: ObjectMetadataItem, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItem: EnrichedObjectMetadataItem, + objectMetadataItems: EnrichedObjectMetadataItem[], ): boolean => { if (!isDefined(fieldMetadataId)) { return true; @@ -46,8 +46,8 @@ export const shouldHideChartSetting = ( objectMetadataId: string, isGroupByEnabled: boolean, configuration?: ChartConfiguration, - objectMetadataItem?: ObjectMetadataItem, - objectMetadataItems?: ObjectMetadataItem[], + objectMetadataItem?: EnrichedObjectMetadataItem, + objectMetadataItems?: EnrichedObjectMetadataItem[], ): boolean => { const hasNoObjectMetadata = !isNonEmptyString(objectMetadataId); const dependsOnSource = item?.dependsOn?.includes( diff --git a/packages/twenty-front/src/modules/side-panel/utils/getSelectedRecordsContextText.ts b/packages/twenty-front/src/modules/side-panel/utils/getSelectedRecordsContextText.ts index 5ca312e7f7..15fbe28b6b 100644 --- a/packages/twenty-front/src/modules/side-panel/utils/getSelectedRecordsContextText.ts +++ b/packages/twenty-front/src/modules/side-panel/utils/getSelectedRecordsContextText.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; export const getSelectedRecordsContextText = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, records: ObjectRecord[], totalCount: number, allowRequestsToTwentyIcons: boolean, diff --git a/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseCreateEvents.ts b/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseCreateEvents.ts index 5fc8eb993d..38f9cd0109 100644 --- a/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseCreateEvents.ts +++ b/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseCreateEvents.ts @@ -1,7 +1,7 @@ import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectTypename } from '@/object-record/cache/utils/getObjectTypename'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; @@ -31,7 +31,7 @@ export const useTriggerOptimisticEffectFromSseCreateEvents = () => { objectMetadataItem, }: { objectRecordEvents: ObjectRecordEvent[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const createEvents = objectRecordEvents.filter((objectRecordEvent) => { return objectRecordEvent.action === DatabaseEventAction.CREATED; diff --git a/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseDeleteEvents.ts b/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseDeleteEvents.ts index 9be79d0cb1..22eb5acfc2 100644 --- a/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseDeleteEvents.ts +++ b/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseDeleteEvents.ts @@ -1,7 +1,7 @@ import { triggerUpdateRecordOptimisticEffectByBatch } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectTypename } from '@/object-record/cache/utils/getObjectTypename'; import { updateRecordFromCache } from '@/object-record/cache/utils/updateRecordFromCache'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; @@ -32,7 +32,7 @@ export const useTriggerOptimisticEffectFromSseDeleteEvents = () => { objectMetadataItem, }: { objectRecordEvents: ObjectRecordEvent[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const deleteEvents = objectRecordEvents.filter((objectRecordEvent) => { return objectRecordEvent.action === DatabaseEventAction.DELETED; diff --git a/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseRestoreEvents.ts b/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseRestoreEvents.ts index bdb84d8703..d09777fa8f 100644 --- a/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseRestoreEvents.ts +++ b/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseRestoreEvents.ts @@ -1,7 +1,7 @@ import { triggerUpdateRecordOptimisticEffectByBatch } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectTypename } from '@/object-record/cache/utils/getObjectTypename'; import { updateRecordFromCache } from '@/object-record/cache/utils/updateRecordFromCache'; import { type RecordGqlNode } from '@/object-record/graphql/types/RecordGqlNode'; @@ -32,7 +32,7 @@ export const useTriggerOptimisticEffectFromSseRestoreEvents = () => { objectMetadataItem, }: { objectRecordEvents: ObjectRecordEvent[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const restoreEvents = objectRecordEvents.filter((objectRecordEvent) => { return objectRecordEvent.action === DatabaseEventAction.RESTORED; diff --git a/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseUpdateEvents.ts b/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseUpdateEvents.ts index d79476b6f6..3117ccf849 100644 --- a/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseUpdateEvents.ts +++ b/packages/twenty-front/src/modules/sse-db-event/hooks/useTriggerOptimisticEffectFromSseUpdateEvents.ts @@ -1,7 +1,7 @@ import { triggerUpdateRecordOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getObjectTypename } from '@/object-record/cache/utils/getObjectTypename'; import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache'; import { getRecordNodeFromRecord } from '@/object-record/cache/utils/getRecordNodeFromRecord'; @@ -32,7 +32,7 @@ export const useTriggerOptimisticEffectFromSseUpdateEvents = () => { objectMetadataItem, }: { objectRecordEvents: ObjectRecordEvent[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const updateEvents = objectRecordEvents.filter((objectRecordEvent) => { return objectRecordEvent.action === DatabaseEventAction.UPDATED; diff --git a/packages/twenty-front/src/modules/sse-db-event/utils/turnSseObjectRecordEventToObjectRecordOperationBrowserEvent.ts b/packages/twenty-front/src/modules/sse-db-event/utils/turnSseObjectRecordEventToObjectRecordOperationBrowserEvent.ts index de775842ec..8cd338e67a 100644 --- a/packages/twenty-front/src/modules/sse-db-event/utils/turnSseObjectRecordEventToObjectRecordOperationBrowserEvent.ts +++ b/packages/twenty-front/src/modules/sse-db-event/utils/turnSseObjectRecordEventToObjectRecordOperationBrowserEvent.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type ObjectRecordOperationBrowserEventDetail } from '@/browser-event/types/ObjectRecordOperationBrowserEventDetail'; import { getObjectRecordOperationUpdateInputs } from '@/sse-db-event/utils/getObjectRecordOperationUpdateInputs'; import { groupObjectRecordSseEventsByEventType } from '@/sse-db-event/utils/groupObjectRecordSseEventsByEventType'; @@ -12,7 +12,7 @@ export const turnSseObjectRecordEventsToObjectRecordOperationBrowserEvents = ({ objectMetadataItem, objectRecordEvents, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; objectRecordEvents: ObjectRecordEvent[]; }): ObjectRecordOperationBrowserEventDetail[] => { const { objectRecordEventsByEventType } = diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/__stories__/NavigationDrawer.stories.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/__stories__/NavigationDrawer.stories.tsx index 424f3d155a..900072b6b3 100644 --- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/__stories__/NavigationDrawer.stories.tsx +++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/__stories__/NavigationDrawer.stories.tsx @@ -13,7 +13,7 @@ import { LoadedDecorator } from '~/testing/decorators/LoadedDecorator'; import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; import { graphqlMocks } from '~/testing/graphqlMocks'; import { mockedWorkspaceMemberData } from '~/testing/mock-data/users'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { NavigationDrawerFixedContent } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerFixedContent'; import { NavigationDrawerSubItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSubItem'; @@ -58,7 +58,7 @@ const meta: Meta = { useEffect(() => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); setCurrentWorkspaceMember(mockedWorkspaceMemberData); }, [setCurrentWorkspaceMember]); diff --git a/packages/twenty-front/src/modules/views/components/__stories__/ViewBarFilterDropdown.stories.tsx b/packages/twenty-front/src/modules/views/components/__stories__/ViewBarFilterDropdown.stories.tsx index 00b2b9d790..d4181ac703 100644 --- a/packages/twenty-front/src/modules/views/components/__stories__/ViewBarFilterDropdown.stories.tsx +++ b/packages/twenty-front/src/modules/views/components/__stories__/ViewBarFilterDropdown.stories.tsx @@ -25,7 +25,7 @@ import { IconsProviderDecorator } from '~/testing/decorators/IconsProviderDecora import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; import { mockedViews } from '~/testing/mock-data/generated/metadata/views/mock-views-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { setTestViewsInMetadataStore } from '~/testing/utils/setTestViewsInMetadataStore'; const meta: Meta = { @@ -33,9 +33,10 @@ const meta: Meta = { component: ViewBarFilterDropdown, decorators: [ (Story) => { - const companyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === CoreObjectNameSingular.Company, - )!; + const companyObjectMetadataItem = + getTestEnrichedObjectMetadataItemsMock().find( + (item) => item.nameSingular === CoreObjectNameSingular.Company, + )!; const instanceId = companyObjectMetadataItem.id; const setCurrentRecordFields = useSetAtomComponentState( diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFilterGroupsToCurrentRecordFilterGroups.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFilterGroupsToCurrentRecordFilterGroups.test.tsx index cf42ff4b82..2377ad4f9b 100644 --- a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFilterGroupsToCurrentRecordFilterGroups.test.tsx +++ b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFilterGroupsToCurrentRecordFilterGroups.test.tsx @@ -16,13 +16,13 @@ import { isDefined } from 'twenty-shared/utils'; import { type ViewFilterGroup as GqlViewFilterGroup } from '~/generated-metadata/graphql'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; import { mockedViews } from '~/testing/mock-data/generated/metadata/views/mock-views-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { setTestViewsInMetadataStore } from '~/testing/utils/setTestViewsInMetadataStore'; const mockObjectMetadataItemNameSingular = 'company'; describe('useApplyCurrentViewFilterGroupsToCurrentRecordFilterGroups', () => { - const mockObjectMetadataItem = generatedMockObjectMetadataItems.find( + const mockObjectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === mockObjectMetadataItemNameSingular, ); diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFiltersToCurrentRecordFilters.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFiltersToCurrentRecordFilters.test.tsx index 788ee09907..0f915ce5c1 100644 --- a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFiltersToCurrentRecordFilters.test.tsx +++ b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFiltersToCurrentRecordFilters.test.tsx @@ -18,13 +18,13 @@ import { } from '~/generated-metadata/graphql'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; import { mockedViews } from '~/testing/mock-data/generated/metadata/views/mock-views-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { setTestViewsInMetadataStore } from '~/testing/utils/setTestViewsInMetadataStore'; const mockObjectMetadataItemNameSingular = 'company'; describe('useApplyCurrentViewFiltersToCurrentRecordFilters', () => { - const mockObjectMetadataItem = generatedMockObjectMetadataItems.find( + const mockObjectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === mockObjectMetadataItemNameSingular, ); diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewSortsToCurrentRecordSorts.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewSortsToCurrentRecordSorts.test.tsx index a62fe3892e..1eb8131f70 100644 --- a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewSortsToCurrentRecordSorts.test.tsx +++ b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewSortsToCurrentRecordSorts.test.tsx @@ -15,13 +15,13 @@ import { isDefined } from 'twenty-shared/utils'; import { ViewSortDirection } from '~/generated-metadata/graphql'; import { getJestMetadataAndApolloMocksAndCommandMenuWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksAndCommandMenuWrapper'; import { mockedViews } from '~/testing/mock-data/generated/metadata/views/mock-views-data'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { setTestViewsInMetadataStore } from '~/testing/utils/setTestViewsInMetadataStore'; const mockObjectMetadataItemNameSingular = 'company'; describe('useApplyCurrentViewSortsToCurrentRecordSorts', () => { - const mockObjectMetadataItem = generatedMockObjectMetadataItems.find( + const mockObjectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === mockObjectMetadataItemNameSingular, ); diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyViewSortsToCurrentRecordSorts.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyViewSortsToCurrentRecordSorts.test.tsx index b85909420d..976d5d6873 100644 --- a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyViewSortsToCurrentRecordSorts.test.tsx +++ b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyViewSortsToCurrentRecordSorts.test.tsx @@ -3,7 +3,7 @@ import { act, renderHook } from '@testing-library/react'; import { currentRecordSortsComponentState } from '@/object-record/record-sort/states/currentRecordSortsComponentState'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { type ViewSortEssential } from '@/views/types/ViewSortEssential'; import { isDefined } from 'twenty-shared/utils'; @@ -14,7 +14,7 @@ import { useApplyViewSortsToCurrentRecordSorts } from '@/views/hooks/useApplyVie const mockObjectMetadataItemNameSingular = 'company'; describe('useApplyViewSortsToCurrentRecordSorts', () => { - const mockObjectMetadataItem = generatedMockObjectMetadataItems.find( + const mockObjectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === mockObjectMetadataItemNameSingular, ); diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useInitializeFilterOnFieldMetadataItemFromViewBarFilterDropdown.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useInitializeFilterOnFieldMetadataItemFromViewBarFilterDropdown.test.tsx index 1ab77579e8..68b25590c1 100644 --- a/packages/twenty-front/src/modules/views/hooks/__tests__/useInitializeFilterOnFieldMetadataItemFromViewBarFilterDropdown.test.tsx +++ b/packages/twenty-front/src/modules/views/hooks/__tests__/useInitializeFilterOnFieldMetadataItemFromViewBarFilterDropdown.test.tsx @@ -23,7 +23,7 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use import { useSetAtomComponentState } from '@/ui/utilities/state/jotai/hooks/useSetAtomComponentState'; import { ViewBarFilterDropdownIds } from '@/views/constants/ViewBarFilterDropdownIds'; import { getFilterTypeFromFieldType } from 'twenty-shared/utils'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; import { setTestObjectMetadataItemsInMetadataStore } from '~/testing/utils/setTestObjectMetadataItemsInMetadataStore'; @@ -48,7 +48,7 @@ const personCreatedAtFieldMetadataItemMock = const wrapper = ({ children }: { children: React.ReactNode }) => { setTestObjectMetadataItemsInMetadataStore( jotaiStore, - generatedMockObjectMetadataItems, + getTestEnrichedObjectMetadataItemsMock(), ); return ( diff --git a/packages/twenty-front/src/modules/views/hooks/useCreateDefaultViewForObject.ts b/packages/twenty-front/src/modules/views/hooks/useCreateDefaultViewForObject.ts index fce223855d..d57adca301 100644 --- a/packages/twenty-front/src/modules/views/hooks/useCreateDefaultViewForObject.ts +++ b/packages/twenty-front/src/modules/views/hooks/useCreateDefaultViewForObject.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { usePerformViewAPIPersist } from '@/views/hooks/internal/usePerformViewAPIPersist'; import { usePerformViewFieldAPIPersist } from '@/views/hooks/internal/usePerformViewFieldAPIPersist'; @@ -17,7 +17,7 @@ export const useCreateDefaultViewForObject = () => { const { performViewFieldAPICreate } = usePerformViewFieldAPIPersist(); const createDefaultViewForObject = useCallback( - async (objectMetadataItem: ObjectMetadataItem) => { + async (objectMetadataItem: EnrichedObjectMetadataItem) => { if (pendingViewCreations.has(objectMetadataItem.id)) { return; } diff --git a/packages/twenty-front/src/modules/views/hooks/useQueryVariablesFromParentView.ts b/packages/twenty-front/src/modules/views/hooks/useQueryVariablesFromParentView.ts index f1698713e2..9bd0cbb588 100644 --- a/packages/twenty-front/src/modules/views/hooks/useQueryVariablesFromParentView.ts +++ b/packages/twenty-front/src/modules/views/hooks/useQueryVariablesFromParentView.ts @@ -1,7 +1,7 @@ import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; import { contextStoreRecordShowParentViewComponentState } from '@/context-store/states/contextStoreRecordShowParentViewComponentState'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useFilterValueDependencies } from '@/object-record/record-filter/hooks/useFilterValueDependencies'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { getQueryVariablesFromFiltersAndSorts } from '@/views/utils/getQueryVariablesFromFiltersAndSorts'; @@ -9,7 +9,7 @@ import { getQueryVariablesFromFiltersAndSorts } from '@/views/utils/getQueryVari export const useQueryVariablesFromParentView = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const { objectMetadataItems } = useObjectMetadataItems(); diff --git a/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts b/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts index b4418f22d7..4c086b66d4 100644 --- a/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts +++ b/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts @@ -1,5 +1,5 @@ import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useLoadRecordIndexStates } from '@/object-record/record-index/hooks/useLoadRecordIndexStates'; import { type ExtendedAggregateOperations } from '@/object-record/record-table/types/ExtendedAggregateOperations'; import { convertExtendedAggregateOperationToAggregateOperation } from '@/object-record/utils/convertExtendedAggregateOperationToAggregateOperation'; @@ -26,7 +26,7 @@ export const useUpdateViewAggregate = () => { }: { kanbanAggregateOperationFieldMetadataId: string | null; kanbanAggregateOperation: ExtendedAggregateOperations | null; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { if (!canPersistChanges) { return; diff --git a/packages/twenty-front/src/modules/views/utils/__tests__/mapRecordFilterGroupToViewFilterGroup.test.ts b/packages/twenty-front/src/modules/views/utils/__tests__/mapRecordFilterGroupToViewFilterGroup.test.ts index 590905d91e..d72491efa9 100644 --- a/packages/twenty-front/src/modules/views/utils/__tests__/mapRecordFilterGroupToViewFilterGroup.test.ts +++ b/packages/twenty-front/src/modules/views/utils/__tests__/mapRecordFilterGroupToViewFilterGroup.test.ts @@ -8,12 +8,12 @@ import { mapRecordFilterGroupToViewFilterGroup } from '@/views/utils/mapRecordFi import { RecordFilterGroupLogicalOperator } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { ViewOpenRecordIn, ViewVisibility } from '~/generated-metadata/graphql'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; const mockObjectMetadataItemNameSingular = 'company'; describe('mapRecordFilterGroupToViewFilterGroup', () => { - const mockObjectMetadataItem = generatedMockObjectMetadataItems.find( + const mockObjectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === mockObjectMetadataItemNameSingular, ); diff --git a/packages/twenty-front/src/modules/views/utils/convertUrlSingleFilterToRecordFilter.ts b/packages/twenty-front/src/modules/views/utils/convertUrlSingleFilterToRecordFilter.ts index 41beada763..7b065bb029 100644 --- a/packages/twenty-front/src/modules/views/utils/convertUrlSingleFilterToRecordFilter.ts +++ b/packages/twenty-front/src/modules/views/utils/convertUrlSingleFilterToRecordFilter.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { type UrlSingleFilter } from '@/views/types/UrlSingleFilter'; @@ -13,7 +13,7 @@ export const convertUrlSingleFilterToRecordFilter = ({ positionInGroup, }: { urlSingleFilter: UrlSingleFilter; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordFilterGroupId?: string; positionInGroup: number; }): RecordFilter | null => { diff --git a/packages/twenty-front/src/modules/views/utils/deserializeUrlRecursiveFilterGroup.ts b/packages/twenty-front/src/modules/views/utils/deserializeUrlRecursiveFilterGroup.ts index 3445ebeabe..d19563b924 100644 --- a/packages/twenty-front/src/modules/views/utils/deserializeUrlRecursiveFilterGroup.ts +++ b/packages/twenty-front/src/modules/views/utils/deserializeUrlRecursiveFilterGroup.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; import { type UrlFilterDeserializationResult } from '@/views/types/UrlFilterDeserializationResult'; @@ -14,7 +14,7 @@ export const deserializeUrlRecursiveFilterGroup = ({ positionInParent, }: { urlRecursiveFilterGroup: UrlRecursiveFilterGroup; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; parentGroupId?: string; positionInParent: number; }): UrlFilterDeserializationResult => { diff --git a/packages/twenty-front/src/modules/views/utils/getFilterableFields.ts b/packages/twenty-front/src/modules/views/utils/getFilterableFields.ts index e45a374786..2537c355c2 100644 --- a/packages/twenty-front/src/modules/views/utils/getFilterableFields.ts +++ b/packages/twenty-front/src/modules/views/utils/getFilterableFields.ts @@ -1,7 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getFilterFilterableFieldMetadataItems } from '@/object-metadata/utils/getFilterFilterableFieldMetadataItems'; -export const getFilterableFields = (objectMetadataItem: ObjectMetadataItem) => { +export const getFilterableFields = ( + objectMetadataItem: EnrichedObjectMetadataItem, +) => { return [ ...objectMetadataItem.fields.filter( getFilterFilterableFieldMetadataItems({ isJsonFilterEnabled: true }), diff --git a/packages/twenty-front/src/modules/views/utils/getQueryVariablesFromFiltersAndSorts.ts b/packages/twenty-front/src/modules/views/utils/getQueryVariablesFromFiltersAndSorts.ts index a92a7e6eb0..b6c18699d2 100644 --- a/packages/twenty-front/src/modules/views/utils/getQueryVariablesFromFiltersAndSorts.ts +++ b/packages/twenty-front/src/modules/views/utils/getQueryVariablesFromFiltersAndSorts.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { turnSortsIntoOrderBy } from '@/object-record/object-sort-dropdown/utils/turnSortsIntoOrderBy'; import { type RecordFilterGroup } from '@/object-record/record-filter-group/types/RecordFilterGroup'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; @@ -17,8 +17,8 @@ export const getQueryVariablesFromFiltersAndSorts = ({ recordFilterGroups: RecordFilterGroup[]; recordFilters: RecordFilter[]; recordSorts: RecordSort[]; - objectMetadataItem: ObjectMetadataItem; - objectMetadataItems?: ObjectMetadataItem[]; + objectMetadataItem: EnrichedObjectMetadataItem; + objectMetadataItems?: EnrichedObjectMetadataItem[]; filterValueDependencies: RecordFilterValueDependencies; }) => { const filter = computeRecordGqlOperationFilter({ diff --git a/packages/twenty-front/src/modules/views/utils/mapViewGroupsToRecordGroupDefinitions.ts b/packages/twenty-front/src/modules/views/utils/mapViewGroupsToRecordGroupDefinitions.ts index 4ab607a760..eb115fef62 100644 --- a/packages/twenty-front/src/modules/views/utils/mapViewGroupsToRecordGroupDefinitions.ts +++ b/packages/twenty-front/src/modules/views/utils/mapViewGroupsToRecordGroupDefinitions.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type RecordGroupDefinition, RecordGroupDefinitionType, @@ -13,7 +13,7 @@ export const mapViewGroupsToRecordGroupDefinitions = ({ viewGroups, }: { mainGroupByFieldMetadataId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; viewGroups: ViewGroup[]; }): RecordGroupDefinition[] => { if (viewGroups?.length === 0) { diff --git a/packages/twenty-front/src/modules/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect.tsx b/packages/twenty-front/src/modules/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect.tsx index 71c85455b2..f8c41a4229 100644 --- a/packages/twenty-front/src/modules/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect.tsx +++ b/packages/twenty-front/src/modules/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { formatFieldMetadataItemAsFieldDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition'; import { FormMultiSelectFieldInput } from '@/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput'; import { type FieldMultiSelectValue } from '@/object-record/record-field/ui/types/FieldMetadata'; @@ -20,7 +20,7 @@ export const WorkflowFieldsMultiSelect = ({ }: { label: string; placeholder: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; handleFieldsChange: (field: FieldMultiSelectValue | string) => void; readonly: boolean; defaultFields: string[] | undefined | null; diff --git a/packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowFieldsMultiSelect.stories.ts b/packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowFieldsMultiSelect.stories.ts index 0def34cf65..49f289f4f8 100644 --- a/packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowFieldsMultiSelect.stories.ts +++ b/packages/twenty-front/src/modules/workflow/components/__stories__/WorkflowFieldsMultiSelect.stories.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { WorkflowFieldsMultiSelect } from '@/workflow/components/WorkflowEditUpdateEventFieldsMultiSelect'; import type { Meta, StoryObj } from '@storybook/react-vite'; import { expect, within } from 'storybook/test'; @@ -63,7 +63,7 @@ const fields = [ }, ]; -const mockObjectMetadataItem: ObjectMetadataItem = { +const mockObjectMetadataItem: EnrichedObjectMetadataItem = { id: '1', universalIdentifier: '1', nameSingular: 'company', diff --git a/packages/twenty-front/src/modules/workflow/hooks/useActiveWorkflowVersionsWithManualTrigger.ts b/packages/twenty-front/src/modules/workflow/hooks/useActiveWorkflowVersionsWithManualTrigger.ts index 814c951227..c158de9b6d 100644 --- a/packages/twenty-front/src/modules/workflow/hooks/useActiveWorkflowVersionsWithManualTrigger.ts +++ b/packages/twenty-front/src/modules/workflow/hooks/useActiveWorkflowVersionsWithManualTrigger.ts @@ -1,6 +1,6 @@ import { isGlobalManualTrigger } from '@/command-menu-item/record/utils/isGlobalManualTrigger'; import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { type ManualTriggerWorkflowVersion, @@ -12,7 +12,7 @@ export const useActiveWorkflowVersionsWithManualTrigger = ({ objectMetadataItem, skip, }: { - objectMetadataItem?: ObjectMetadataItem; + objectMetadataItem?: EnrichedObjectMetadataItem; skip?: boolean; }) => { const filters = [ diff --git a/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowRunOpeningInSidePanelEffects.ts b/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowRunOpeningInSidePanelEffects.ts index 76128b971f..ea263df24e 100644 --- a/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowRunOpeningInSidePanelEffects.ts +++ b/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowRunOpeningInSidePanelEffects.ts @@ -1,7 +1,7 @@ import { useSidePanelWorkflowNavigation } from '@/side-panel/pages/workflow/hooks/useSidePanelWorkflowNavigation'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { flowComponentState } from '@/workflow/states/flowComponentState'; @@ -32,7 +32,7 @@ export const useRunWorkflowRunOpeningInSidePanelEffects = () => { objectMetadataItem, recordId, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; recordId: string; }) => { const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsFilters.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsFilters.tsx index 3ff1a7f103..ce10a1c959 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsFilters.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsFilters.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { AdvancedFilterSidePanelContainer } from '@/object-record/advanced-filter/side-panel/components/AdvancedFilterSidePanelContainer'; import { currentRecordFilterGroupsComponentState } from '@/object-record/record-filter-group/states/currentRecordFilterGroupsComponentState'; @@ -16,7 +16,7 @@ export const WorkflowFindRecordsFilters = ({ onChange, readonly, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; onChange: (filter: FindRecordsActionFilter) => void; readonly?: boolean; }) => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsSorts.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsSorts.tsx index 1d4609f39a..9fc91efac6 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsSorts.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowFindRecordsSorts.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { filterSortableFieldMetadataItems } from '@/object-metadata/utils/filterSortableFieldMetadataItems'; import { type RecordSort } from '@/object-record/record-sort/types/RecordSort'; import { Select } from '@/ui/input/components/Select'; @@ -29,7 +29,7 @@ const StyledAddButtonContainer = styled.div` type WorkflowFindRecordsSortsProps = { recordSorts: RecordSort[]; onChange: (recordSorts: RecordSort[]) => void; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; readonly: boolean; }; diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/__tests__/getManualTriggerDefaultSettings.test.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/__tests__/getManualTriggerDefaultSettings.test.ts index 045732d2b5..bfe79df203 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/__tests__/getManualTriggerDefaultSettings.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/__tests__/getManualTriggerDefaultSettings.test.ts @@ -1,8 +1,8 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { COMMAND_MENU_DEFAULT_ICON } from '@/workflow/workflow-trigger/constants/CommandMenuDefaultIcon'; import { getManualTriggerDefaultSettings } from '@/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings'; -const mockObjectMetadataItems: ObjectMetadataItem[] = [ +const mockObjectMetadataItems: EnrichedObjectMetadataItem[] = [ { id: 'company-id', nameSingular: 'company', @@ -12,7 +12,7 @@ const mockObjectMetadataItems: ObjectMetadataItem[] = [ icon: 'IconBuilding', fields: [], createdAt: new Date(), - } as unknown as ObjectMetadataItem, + } as unknown as EnrichedObjectMetadataItem, ]; describe('getManualTriggerDefaultSettings', () => { @@ -76,7 +76,7 @@ describe('getManualTriggerDefaultSettings', () => { }); it('should use the first object metadata item', () => { - const multipleObjects: ObjectMetadataItem[] = [ + const multipleObjects: EnrichedObjectMetadataItem[] = [ ...mockObjectMetadataItems, { id: 'person-id', @@ -86,7 +86,7 @@ describe('getManualTriggerDefaultSettings', () => { labelPlural: 'People', icon: 'IconUser', fields: [], - } as unknown as ObjectMetadataItem, + } as unknown as EnrichedObjectMetadataItem, ]; const result = getManualTriggerDefaultSettings({ diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/__tests__/getTriggerDefaultDefinition.test.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/__tests__/getTriggerDefaultDefinition.test.ts index fc3fedec17..e77cb98de8 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/__tests__/getTriggerDefaultDefinition.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/__tests__/getTriggerDefaultDefinition.test.ts @@ -1,6 +1,6 @@ import { COMMAND_MENU_DEFAULT_ICON } from '@/workflow/workflow-trigger/constants/CommandMenuDefaultIcon'; import { DatabaseTriggerDefaultLabel } from '@/workflow/workflow-trigger/constants/DatabaseTriggerDefaultLabel'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getTriggerDefaultDefinition } from '@/workflow/workflow-trigger/utils/getTriggerDefaultDefinition'; describe('getTriggerDefaultDefinition', () => { @@ -19,13 +19,14 @@ describe('getTriggerDefaultDefinition', () => { getTriggerDefaultDefinition({ defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_CREATED, type: 'DATABASE_EVENT', - activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems, + activeNonSystemObjectMetadataItems: + getTestEnrichedObjectMetadataItemsMock(), }), ).toStrictEqual({ type: 'DATABASE_EVENT', name: 'Record is created', settings: { - eventName: `${generatedMockObjectMetadataItems[0].nameSingular}.created`, + eventName: `${getTestEnrichedObjectMetadataItemsMock()[0].nameSingular}.created`, outputSchema: {}, }, position: { @@ -40,13 +41,14 @@ describe('getTriggerDefaultDefinition', () => { getTriggerDefaultDefinition({ defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_UPDATED, type: 'DATABASE_EVENT', - activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems, + activeNonSystemObjectMetadataItems: + getTestEnrichedObjectMetadataItemsMock(), }), ).toStrictEqual({ type: 'DATABASE_EVENT', name: 'Record is updated', settings: { - eventName: `${generatedMockObjectMetadataItems[0].nameSingular}.updated`, + eventName: `${getTestEnrichedObjectMetadataItemsMock()[0].nameSingular}.updated`, outputSchema: {}, }, position: { @@ -61,13 +63,14 @@ describe('getTriggerDefaultDefinition', () => { getTriggerDefaultDefinition({ defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_DELETED, type: 'DATABASE_EVENT', - activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems, + activeNonSystemObjectMetadataItems: + getTestEnrichedObjectMetadataItemsMock(), }), ).toStrictEqual({ type: 'DATABASE_EVENT', name: 'Record is deleted', settings: { - eventName: `${generatedMockObjectMetadataItems[0].nameSingular}.deleted`, + eventName: `${getTestEnrichedObjectMetadataItemsMock()[0].nameSingular}.deleted`, outputSchema: {}, }, position: { @@ -82,7 +85,8 @@ describe('getTriggerDefaultDefinition', () => { getTriggerDefaultDefinition({ defaultLabel: 'Launch manually', type: 'MANUAL', - activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems, + activeNonSystemObjectMetadataItems: + getTestEnrichedObjectMetadataItemsMock(), }), ).toStrictEqual({ type: 'MANUAL', @@ -109,7 +113,8 @@ describe('getTriggerDefaultDefinition', () => { getTriggerDefaultDefinition({ defaultLabel: 'On a schedule', type: 'CRON', - activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems, + activeNonSystemObjectMetadataItems: + getTestEnrichedObjectMetadataItemsMock(), }), ).toStrictEqual({ type: 'CRON', @@ -131,7 +136,8 @@ describe('getTriggerDefaultDefinition', () => { getTriggerDefaultDefinition({ defaultLabel: 'Webhook', type: 'WEBHOOK', - activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems, + activeNonSystemObjectMetadataItems: + getTestEnrichedObjectMetadataItemsMock(), }), ).toStrictEqual({ type: 'WEBHOOK', @@ -153,7 +159,8 @@ describe('getTriggerDefaultDefinition', () => { getTriggerDefaultDefinition({ defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_CREATED, type: 'unknown' as any, - activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems, + activeNonSystemObjectMetadataItems: + getTestEnrichedObjectMetadataItemsMock(), }); }).toThrow('Unknown type: unknown'); }); diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings.ts index 58228a47ea..25904953c8 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type WorkflowManualTriggerSettings } from '@/workflow/types/Workflow'; import { COMMAND_MENU_DEFAULT_ICON } from '@/workflow/workflow-trigger/constants/CommandMenuDefaultIcon'; import { assertUnreachable } from 'twenty-shared/utils'; @@ -10,7 +10,7 @@ export const getManualTriggerDefaultSettings = ({ isPinned, }: { availabilityType: 'GLOBAL' | 'SINGLE_RECORD' | 'BULK_RECORDS'; - activeNonSystemObjectMetadataItems: ObjectMetadataItem[]; + activeNonSystemObjectMetadataItems: EnrichedObjectMetadataItem[]; icon?: string; isPinned?: boolean; }): WorkflowManualTriggerSettings => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTriggerDefaultDefinition.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTriggerDefaultDefinition.ts index 0fd51f3307..036d745ccb 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTriggerDefaultDefinition.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTriggerDefaultDefinition.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type WorkflowTrigger, type WorkflowTriggerType, @@ -15,7 +15,7 @@ export const getTriggerDefaultDefinition = ({ }: { defaultLabel: string; type: WorkflowTriggerType; - activeNonSystemObjectMetadataItems: ObjectMetadataItem[]; + activeNonSystemObjectMetadataItems: EnrichedObjectMetadataItem[]; }): WorkflowTrigger => { if (activeNonSystemObjectMetadataItems.length === 0) { throw new Error( diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/computeStepOutputSchema.test.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/computeStepOutputSchema.test.ts index 7e1437bd49..bce7d4ff98 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/computeStepOutputSchema.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/computeStepOutputSchema.test.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { computeStepOutputSchema, shouldComputeOutputSchemaOnFrontend, } from '@/workflow/workflow-variables/utils/generate/computeStepOutputSchema'; import { FieldMetadataType } from 'twenty-shared/types'; -const mockCompanyObjectMetadataItem: ObjectMetadataItem = { +const mockCompanyObjectMetadataItem: EnrichedObjectMetadataItem = { id: 'company-metadata-id', nameSingular: 'company', namePlural: 'companies', @@ -22,7 +22,7 @@ const mockCompanyObjectMetadataItem: ObjectMetadataItem = { isSystem: false, }, ], -} as ObjectMetadataItem; +} as EnrichedObjectMetadataItem; describe('computeStepOutputSchema', () => { describe('PERSISTED_OUTPUT_SCHEMA_TYPES', () => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateFindRecordsOutputSchema.test.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateFindRecordsOutputSchema.test.ts index 2df96d8325..b5a2435f5b 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateFindRecordsOutputSchema.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateFindRecordsOutputSchema.test.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateFindRecordsOutputSchema } from '@/workflow/workflow-variables/utils/generate/generateFindRecordsOutputSchema'; const createMockObjectMetadataItem = ( - overrides: Partial = {}, -): ObjectMetadataItem => + overrides: Partial = {}, +): EnrichedObjectMetadataItem => ({ id: 'test-object-id', nameSingular: 'testObject', @@ -13,7 +13,7 @@ const createMockObjectMetadataItem = ( icon: 'IconTest', fields: [], ...overrides, - }) as ObjectMetadataItem; + }) as EnrichedObjectMetadataItem; describe('generateFindRecordsOutputSchema', () => { it('should generate schema with first, all, and totalCount properties', () => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateFormOutputSchema.test.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateFormOutputSchema.test.ts index 8ce2a5e6a1..57d0b01ee9 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateFormOutputSchema.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateFormOutputSchema.test.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type WorkflowFormActionField } from '@/workflow/workflow-steps/workflow-actions/form-action/types/WorkflowFormActionField'; import { generateFormOutputSchema } from '@/workflow/workflow-variables/utils/generate/generateFormOutputSchema'; import { FieldMetadataType } from 'twenty-shared/types'; const createMockObjectMetadataItem = ( - overrides: Partial = {}, -): ObjectMetadataItem => + overrides: Partial = {}, +): EnrichedObjectMetadataItem => ({ id: 'test-object-id', nameSingular: 'testObject', @@ -15,7 +15,7 @@ const createMockObjectMetadataItem = ( icon: 'IconTest', fields: [], ...overrides, - }) as ObjectMetadataItem; + }) as EnrichedObjectMetadataItem; describe('generateFormOutputSchema', () => { describe('Non-RECORD fields', () => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateRecordEventOutputSchema.test.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateRecordEventOutputSchema.test.ts index d87860529e..55da4e85b5 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateRecordEventOutputSchema.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateRecordEventOutputSchema.test.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateRecordEventOutputSchema } from '@/workflow/workflow-variables/utils/generate/generateRecordEventOutputSchema'; import { FieldMetadataType, RelationType } from 'twenty-shared/types'; import { DatabaseEventAction } from '~/generated-metadata/graphql'; const createMockObjectMetadataItem = ( - overrides: Partial = {}, -): ObjectMetadataItem => + overrides: Partial = {}, +): EnrichedObjectMetadataItem => ({ id: 'test-object-id', nameSingular: 'testObject', @@ -15,7 +15,7 @@ const createMockObjectMetadataItem = ( icon: 'IconTest', fields: [], ...overrides, - }) as ObjectMetadataItem; + }) as EnrichedObjectMetadataItem; describe('generateRecordEventOutputSchema', () => { describe('CREATED action', () => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateRecordOutputSchema.test.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateRecordOutputSchema.test.ts index 7c6559ccf7..a6cd13357f 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateRecordOutputSchema.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/__tests__/generateRecordOutputSchema.test.ts @@ -1,10 +1,10 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { generateRecordOutputSchema } from '@/workflow/workflow-variables/utils/generate/generateRecordOutputSchema'; import { FieldMetadataType, RelationType } from 'twenty-shared/types'; const createMockObjectMetadataItem = ( - overrides: Partial = {}, -): ObjectMetadataItem => + overrides: Partial = {}, +): EnrichedObjectMetadataItem => ({ id: 'test-object-id', nameSingular: 'testObject', @@ -14,7 +14,7 @@ const createMockObjectMetadataItem = ( icon: 'IconTest', fields: [], ...overrides, - }) as ObjectMetadataItem; + }) as EnrichedObjectMetadataItem; describe('generateRecordOutputSchema', () => { it('should generate schema with correct object metadata', () => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/computeStepOutputSchema.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/computeStepOutputSchema.ts index 1326492fe9..122d7b8ae5 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/computeStepOutputSchema.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/computeStepOutputSchema.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type WorkflowAction, type WorkflowTrigger, @@ -21,9 +21,9 @@ const PERSISTED_OUTPUT_SCHEMA_TYPES = [ ]; const findObjectMetadataItemByName = ( - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], objectName: string, -): ObjectMetadataItem | undefined => { +): EnrichedObjectMetadataItem | undefined => { return objectMetadataItems.find((item) => item.nameSingular === objectName); }; @@ -57,7 +57,7 @@ export const computeStepOutputSchema = ({ objectMetadataItems, }: { step: WorkflowTrigger | WorkflowAction; - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; }): OutputSchemaV2 | undefined => { const stepType = step.type; diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateFindRecordsOutputSchema.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateFindRecordsOutputSchema.ts index 50dd0a35bd..07f2b312a3 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateFindRecordsOutputSchema.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateFindRecordsOutputSchema.ts @@ -1,9 +1,9 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type FindRecordsOutputSchema } from '@/workflow/workflow-variables/types/FindRecordsOutputSchema'; import { generateRecordOutputSchema } from '@/workflow/workflow-variables/utils/generate/generateRecordOutputSchema'; export const generateFindRecordsOutputSchema = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ): FindRecordsOutputSchema => { const recordOutputSchema = generateRecordOutputSchema(objectMetadataItem); diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateFormOutputSchema.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateFormOutputSchema.ts index a28ed99290..a4fb2c04e0 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateFormOutputSchema.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateFormOutputSchema.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type WorkflowFormActionField } from '@/workflow/workflow-steps/workflow-actions/form-action/types/WorkflowFormActionField'; import { type FormOutputSchema } from '@/workflow/workflow-variables/types/FormOutputSchema'; import { generateFakeValue } from '@/workflow/workflow-variables/utils/generate/generateFakeValue'; @@ -8,7 +8,7 @@ import { isDefined } from 'twenty-shared/utils'; export const generateFormOutputSchema = ( formFields: WorkflowFormActionField[], - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ): FormOutputSchema => { const result: FormOutputSchema = {}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateRecordEventOutputSchema.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateRecordEventOutputSchema.ts index 8f207cb270..9c17ba9b21 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateRecordEventOutputSchema.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateRecordEventOutputSchema.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type DatabaseEventTriggerOutputSchema } from '@/workflow/workflow-variables/types/DatabaseEventTriggerOutputSchema'; import { type FieldOutputSchemaV2, @@ -24,7 +24,7 @@ const camelToTitleCase = (camelCaseText: string): string => const EXCLUDED_SYSTEM_FIELDS = ['searchVector', 'position']; const shouldGenerateFieldOutput = ( - fieldMetadataItem: ObjectMetadataItem['fields'][number], + fieldMetadataItem: EnrichedObjectMetadataItem['fields'][number], ): boolean => { if (!fieldMetadataItem.isActive) { return false; @@ -57,7 +57,7 @@ const shouldGenerateFieldOutput = ( }; const generatePrefixedRecordField = ( - fieldMetadataItem: ObjectMetadataItem['fields'][number], + fieldMetadataItem: EnrichedObjectMetadataItem['fields'][number], prefix: string, ): Record => { const compositeType = compositeTypeDefinitions.get(fieldMetadataItem.type); @@ -106,7 +106,7 @@ const generatePrefixedRecordField = ( }; const generatePrefixedRecordFields = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, prefix: string, ): Record => { const result: Record = {}; @@ -145,7 +145,7 @@ const generatePrefixedRecordFields = ( }; const generateRecordEventWithPrefix = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, prefix: string, ): RecordOutputSchemaV2 => { return { @@ -161,7 +161,7 @@ const generateRecordEventWithPrefix = ( }; export const generateRecordEventOutputSchema = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, action: DatabaseEventAction, ): DatabaseEventTriggerOutputSchema => { switch (action) { diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateRecordOutputSchema.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateRecordOutputSchema.ts index 2dc023db9f..aa6dc832f3 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateRecordOutputSchema.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/utils/generate/generateRecordOutputSchema.ts @@ -1,5 +1,5 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type FieldOutputSchemaV2, type RecordFieldLeaf, @@ -98,7 +98,7 @@ const generateRecordField = ( }; const generateRecordFields = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ): Record => { const result: Record = {}; @@ -133,7 +133,7 @@ const generateRecordFields = ( }; export const generateRecordOutputSchema = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ): RecordOutputSchemaV2 => { return { object: { 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 da47f0db0e..033a6809da 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx @@ -1,6 +1,6 @@ import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { SettingsRolesQueryEffect } from '@/settings/roles/components/SettingsRolesQueryEffect'; import { SettingsRolePermissions } from '@/settings/roles/role-permissions/components/SettingsRolePermissions'; import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; @@ -30,7 +30,7 @@ type SettingsApplicationPermissionsTabProps = { const resolvePermissionIds = ( defaultRole: MarketplaceAppDefaultRole, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ): { objectUniversalIdToIdMap: Record; fieldUniversalIdToIdMap: Record; @@ -187,7 +187,7 @@ const buildobjectMetadataItemsFromMarketplaceApp = ( defaultRole: MarketplaceAppDefaultRole, objectUniversalIdToIdMap: Record, marketplaceAppObjects: MarketplaceAppObject[], -): ObjectMetadataItem[] => { +): EnrichedObjectMetadataItem[] => { const unresolvedUniversalIds = new Set(); for (const permission of defaultRole.objectPermissions) { @@ -237,7 +237,7 @@ const buildobjectMetadataItemsFromMarketplaceApp = ( .map((permission) => permission.fieldUniversalIdentifier), ); - const item: ObjectMetadataItem = { + const item: EnrichedObjectMetadataItem = { __typename: 'Object', id: universalId, universalIdentifier: universalId, @@ -280,7 +280,7 @@ const MarketplaceRoleEffect = ({ defaultRole: MarketplaceAppDefaultRole; marketplaceAppObjects: MarketplaceAppObject[]; onObjectMetadataItemsFromMarketplaceApp: ( - items: ObjectMetadataItem[], + items: EnrichedObjectMetadataItem[], ) => void; }) => { const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); @@ -335,10 +335,10 @@ const MarketplaceAppPermissions = ({ const [ objectMetadataItemsFromMarketplaceApp, setObjectMetadataItemsFromMarketplaceApp, - ] = useState([]); + ] = useState([]); const handleObjectsFromMarketplaceApp = useCallback( - (objects: ObjectMetadataItem[]) => + (objects: EnrichedObjectMetadataItem[]) => setObjectMetadataItemsFromMarketplaceApp(objects), [], ); diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldTable.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldTable.tsx index 46e888740f..b27e3a6422 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldTable.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldTable.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { TableRow } from '@/ui/layout/table/components/TableRow'; import { @@ -78,7 +78,7 @@ const SETTINGS_OBJECT_FIELD_TABLE_METADATA: TableMetadata { const { theme } = useContext(ThemeContext); diff --git a/packages/twenty-front/src/pages/settings/data-model/hooks/useMapFieldMetadataItemToSettingsObjectDetailTableItem.ts b/packages/twenty-front/src/pages/settings/data-model/hooks/useMapFieldMetadataItemToSettingsObjectDetailTableItem.ts index 9070e46bc5..de5468238c 100644 --- a/packages/twenty-front/src/pages/settings/data-model/hooks/useMapFieldMetadataItemToSettingsObjectDetailTableItem.ts +++ b/packages/twenty-front/src/pages/settings/data-model/hooks/useMapFieldMetadataItemToSettingsObjectDetailTableItem.ts @@ -1,7 +1,7 @@ import { isDefined } from 'twenty-shared/utils'; import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMetadata'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type FieldType } from '@/settings/data-model/types/FieldType'; import { type SettingsFieldType } from '@/settings/data-model/types/SettingsFieldType'; import { getFieldIdentifierType } from '@/settings/data-model/utils/getFieldIdentifierType'; @@ -11,7 +11,7 @@ import { type SettingsObjectDetailTableItem } from '~/pages/settings/data-model/ import { getSettingsObjectFieldType } from '~/pages/settings/data-model/utils/getSettingsObjectFieldType'; export const useMapFieldMetadataItemToSettingsObjectDetailTableItem = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, ) => { const getRelationMetadata = useGetRelationMetadata(); diff --git a/packages/twenty-front/src/pages/settings/data-model/types/SettingsObjectDetailTableItem.ts b/packages/twenty-front/src/pages/settings/data-model/types/SettingsObjectDetailTableItem.ts index 12cde111e6..499b79d1b4 100644 --- a/packages/twenty-front/src/pages/settings/data-model/types/SettingsObjectDetailTableItem.ts +++ b/packages/twenty-front/src/pages/settings/data-model/types/SettingsObjectDetailTableItem.ts @@ -1,10 +1,10 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type FieldIdentifierType } from '@/settings/data-model/types/FieldIdentifierType'; export type SettingsObjectDetailTableItem = { fieldMetadataItem: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; fieldType: string | boolean; label: string; dataType: string; diff --git a/packages/twenty-front/src/pages/settings/data-model/types/SettingsObjectTableItem.ts b/packages/twenty-front/src/pages/settings/data-model/types/SettingsObjectTableItem.ts index d6742fd586..6748de44ed 100644 --- a/packages/twenty-front/src/pages/settings/data-model/types/SettingsObjectTableItem.ts +++ b/packages/twenty-front/src/pages/settings/data-model/types/SettingsObjectTableItem.ts @@ -1,7 +1,7 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; export type SettingsObjectTableItem = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; totalObjectCount: number; fieldsCount: number; objectTypeLabel: string; diff --git a/packages/twenty-front/src/pages/settings/data-model/utils/getSettingsObjectFieldType.ts b/packages/twenty-front/src/pages/settings/data-model/utils/getSettingsObjectFieldType.ts index 07bef09357..6de55dd023 100644 --- a/packages/twenty-front/src/pages/settings/data-model/utils/getSettingsObjectFieldType.ts +++ b/packages/twenty-front/src/pages/settings/data-model/utils/getSettingsObjectFieldType.ts @@ -1,10 +1,10 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getFieldIdentifierType } from '@/settings/data-model/utils/getFieldIdentifierType'; import { isDefined } from 'twenty-shared/utils'; export const getSettingsObjectFieldType = ( - objectMetadataItem: ObjectMetadataItem, + objectMetadataItem: EnrichedObjectMetadataItem, fieldMetadataItem: FieldMetadataItem, ) => { const variant = objectMetadataItem.isCustom ? 'identifier' : 'field-type'; diff --git a/packages/twenty-front/src/testing/cache/inMemoryTestingCacheInstance.ts b/packages/twenty-front/src/testing/cache/inMemoryTestingCacheInstance.ts index f2d8b52f8c..33c21f0d6e 100644 --- a/packages/twenty-front/src/testing/cache/inMemoryTestingCacheInstance.ts +++ b/packages/twenty-front/src/testing/cache/inMemoryTestingCacheInstance.ts @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache'; import { updateRecordFromCache } from '@/object-record/cache/utils/updateRecordFromCache'; import { generateDepthRecordGqlFieldsFromRecord } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromRecord'; @@ -9,16 +9,16 @@ import { isDefined } from 'twenty-shared/utils'; type ObjectMetadataItemAndRecordId = { recordId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }; type RecordsWithObjectMetadataItem = { records: ObjectRecord[]; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }[]; type GetMockCachedRecord = { recordId: string; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; matchObject?: Record; snapshotPropertyMatchers?: { deletedAt?: any; @@ -27,13 +27,13 @@ type GetMockCachedRecord = { }; }; type InMemoryTestingCacheInstanceArgs = { - objectMetadataItems: ObjectMetadataItem[]; + objectMetadataItems: EnrichedObjectMetadataItem[]; initialRecordsInCache?: RecordsWithObjectMetadataItem; }; export class InMemoryTestingCacheInstance { private _cache: InMemoryCache; - private objectMetadataItems: ObjectMetadataItem[]; + private objectMetadataItems: EnrichedObjectMetadataItem[]; private initialStateExtract: NormalizedCacheObject; constructor({ diff --git a/packages/twenty-front/src/testing/decorators/ChipGeneratorsDecorator.tsx b/packages/twenty-front/src/testing/decorators/ChipGeneratorsDecorator.tsx index 10fd0739c9..e88fed3ebb 100644 --- a/packages/twenty-front/src/testing/decorators/ChipGeneratorsDecorator.tsx +++ b/packages/twenty-front/src/testing/decorators/ChipGeneratorsDecorator.tsx @@ -3,12 +3,12 @@ import { useMemo } from 'react'; import { PreComputedChipGeneratorsContext } from '@/object-metadata/contexts/PreComputedChipGeneratorsContext'; import { getRecordChipGenerators } from '@/object-record/utils/getRecordChipGenerators'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; export const ChipGeneratorsDecorator: Decorator = (Story) => { const { chipGeneratorPerObjectPerField, identifierChipGeneratorPerObject } = useMemo(() => { - return getRecordChipGenerators(generatedMockObjectMetadataItems); + return getRecordChipGenerators(getTestEnrichedObjectMetadataItemsMock()); }, []); return ( diff --git a/packages/twenty-front/src/testing/decorators/ObjectMetadataItemsDecorator.tsx b/packages/twenty-front/src/testing/decorators/ObjectMetadataItemsDecorator.tsx index 07c98b18aa..283f22e7e9 100644 --- a/packages/twenty-front/src/testing/decorators/ObjectMetadataItemsDecorator.tsx +++ b/packages/twenty-front/src/testing/decorators/ObjectMetadataItemsDecorator.tsx @@ -7,7 +7,7 @@ import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMembe import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { PreComputedChipGeneratorsProvider } from '@/object-metadata/components/PreComputedChipGeneratorsProvider'; -import { useLoadMockedObjectMetadataItems } from '@/object-metadata/hooks/useLoadMockedObjectMetadataItems'; +import { useLoadMockedMinimalMetadata } from '@/metadata-store/hooks/useLoadMockedMinimalMetadata'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode'; import { type WorkspaceMember } from '@/workspace-member/types/WorkspaceMember'; @@ -22,7 +22,7 @@ export const ObjectMetadataItemsDecorator: Decorator = (Story) => { const setCurrentUser = useSetAtomState(currentUserState); const setCurrentUserWorkspace = useSetAtomState(currentUserWorkspaceState); - const { loadMockedObjectMetadataItems } = useLoadMockedObjectMetadataItems(); + const { loadMockedMinimalMetadata } = useLoadMockedMinimalMetadata(); useEffect(() => { setCurrentWorkspaceMember( @@ -32,12 +32,12 @@ export const ObjectMetadataItemsDecorator: Decorator = (Story) => { ); setCurrentUser(mockedUserData); setCurrentUserWorkspace(mockedUserData.currentUserWorkspace); - loadMockedObjectMetadataItems(); + loadMockedMinimalMetadata(); }, [ setCurrentUser, setCurrentWorkspaceMember, setCurrentUserWorkspace, - loadMockedObjectMetadataItems, + loadMockedMinimalMetadata, ]); return ( diff --git a/packages/twenty-front/src/testing/decorators/RecordTableDecorator.tsx b/packages/twenty-front/src/testing/decorators/RecordTableDecorator.tsx index 75e2a5bf6c..f7ae48e033 100644 --- a/packages/twenty-front/src/testing/decorators/RecordTableDecorator.tsx +++ b/packages/twenty-front/src/testing/decorators/RecordTableDecorator.tsx @@ -6,7 +6,7 @@ import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainCo import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { labelIdentifierFieldMetadataItemSelector } from '@/object-metadata/states/labelIdentifierFieldMetadataItemSelector'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition'; import { RecordComponentInstanceContextsWrapper } from '@/object-record/components/RecordComponentInstanceContextsWrapper'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; @@ -44,7 +44,7 @@ const companyView = mockedViews.find((v) => v.name === 'All Companies')!; const InternalTableStateLoaderEffect = ({ objectMetadataItem, }: { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const { recordTableId } = useRecordTableContextOrThrow(); const { loadRecordIndexStates } = useLoadRecordIndexStates(); @@ -101,7 +101,7 @@ const InternalTableContextProviders = ({ objectMetadataItem, }: { children: React.ReactNode; - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; }) => { const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); diff --git a/packages/twenty-front/src/testing/decorators/WorkflowStepDecorator.tsx b/packages/twenty-front/src/testing/decorators/WorkflowStepDecorator.tsx index 7dde976fb4..052309cb7b 100644 --- a/packages/twenty-front/src/testing/decorators/WorkflowStepDecorator.tsx +++ b/packages/twenty-front/src/testing/decorators/WorkflowStepDecorator.tsx @@ -1,6 +1,6 @@ import { sidePanelWorkflowIdComponentState } from '@/side-panel/pages/workflow/states/sidePanelWorkflowIdComponentState'; import { SidePanelPageComponentInstanceContext } from '@/side-panel/states/contexts/SidePanelPageComponentInstanceContext'; -import { useLoadMockedObjectMetadataItems } from '@/object-metadata/hooks/useLoadMockedObjectMetadataItems'; +import { useLoadMockedMinimalMetadata } from '@/metadata-store/hooks/useLoadMockedMinimalMetadata'; import { flowComponentState } from '@/workflow/states/flowComponentState'; import { workflowVisualizerWorkflowIdComponentState } from '@/workflow/states/workflowVisualizerWorkflowIdComponentState'; import { workflowVisualizerWorkflowRunIdComponentState } from '@/workflow/states/workflowVisualizerWorkflowRunIdComponentState'; @@ -24,7 +24,7 @@ export const WorkflowStepDecorator: Decorator = (Story) => { const workflowVersion = mockedWorkflowVersion as WorkflowVersion; const { populateStepsOutputSchema } = useStepsOutputSchema(); - const { loadMockedObjectMetadataItems } = useLoadMockedObjectMetadataItems(); + const { loadMockedMinimalMetadata } = useLoadMockedMinimalMetadata(); const [ready, setReady] = useState(false); @@ -32,7 +32,7 @@ export const WorkflowStepDecorator: Decorator = (Story) => { useEffect(() => { const setup = async () => { - await loadMockedObjectMetadataItems(); + await loadMockedMinimalMetadata(); store.set( workflowVisualizerWorkflowIdComponentState.atomFamily({ @@ -80,7 +80,7 @@ export const WorkflowStepDecorator: Decorator = (Story) => { setup(); }, [ - loadMockedObjectMetadataItems, + loadMockedMinimalMetadata, populateStepsOutputSchema, workflowVersion, store, diff --git a/packages/twenty-front/src/testing/jest/JestObjectMetadataItemSetter.tsx b/packages/twenty-front/src/testing/jest/JestObjectMetadataItemSetter.tsx index 9d5c8a4c3e..134db13cbe 100644 --- a/packages/twenty-front/src/testing/jest/JestObjectMetadataItemSetter.tsx +++ b/packages/twenty-front/src/testing/jest/JestObjectMetadataItemSetter.tsx @@ -1,24 +1,25 @@ import { type ReactNode, useEffect, useState } from 'react'; import { useMetadataStore } from '@/metadata-store/hooks/useMetadataStore'; -import { splitObjectMetadataItemWithRelated } from '@/metadata-store/utils/splitObjectMetadataItemWithRelated'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { splitCompositeObjectMetadataItems } from '@/metadata-store/utils/splitCompositeObjectMetadataItems'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; export const JestObjectMetadataItemSetter = ({ children, objectMetadataItems, }: { children: ReactNode; - objectMetadataItems?: ObjectMetadataItem[]; + objectMetadataItems?: EnrichedObjectMetadataItem[]; }) => { const { replaceDraft, applyChanges } = useMetadataStore(); const [isLoaded, setIsLoaded] = useState(false); useEffect(() => { - const items = objectMetadataItems ?? generatedMockObjectMetadataItems; + const items = + objectMetadataItems ?? getTestEnrichedObjectMetadataItemsMock(); const { flatObjects, flatFields, flatIndexes } = - splitObjectMetadataItemWithRelated(items); + splitCompositeObjectMetadataItems(items); replaceDraft('objectMetadataItems', flatObjects); replaceDraft('fieldMetadataItems', flatFields); diff --git a/packages/twenty-front/src/testing/jest/JestRecordIndexContextProviderWrapper.tsx b/packages/twenty-front/src/testing/jest/JestRecordIndexContextProviderWrapper.tsx index ef6cda27a4..bfd1918e81 100644 --- a/packages/twenty-front/src/testing/jest/JestRecordIndexContextProviderWrapper.tsx +++ b/packages/twenty-front/src/testing/jest/JestRecordIndexContextProviderWrapper.tsx @@ -1,4 +1,4 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordFilterGroupsComponentInstanceContext } from '@/object-record/record-filter-group/states/context/RecordFilterGroupsComponentInstanceContext'; import { RecordFiltersComponentInstanceContext } from '@/object-record/record-filter/states/context/RecordFiltersComponentInstanceContext'; import { RecordSortsComponentInstanceContext } from '@/object-record/record-sort/states/context/RecordSortsComponentInstanceContext'; @@ -9,7 +9,7 @@ import { type PropsWithChildren } from 'react'; const RECORD_INDEX_ID = 'recordIndexId'; type JestRecordIndexContextProviderWrapperProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; } & PropsWithChildren; export const JestRecordIndexContextProviderWrapper = ({ diff --git a/packages/twenty-front/src/testing/jest/getJestMetadataAndApolloMocksWrapper.tsx b/packages/twenty-front/src/testing/jest/getJestMetadataAndApolloMocksWrapper.tsx index 2a524b3572..547f2c8ccd 100644 --- a/packages/twenty-front/src/testing/jest/getJestMetadataAndApolloMocksWrapper.tsx +++ b/packages/twenty-front/src/testing/jest/getJestMetadataAndApolloMocksWrapper.tsx @@ -5,7 +5,7 @@ import { type ReactNode, useState } from 'react'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { RecordComponentInstanceContextsWrapper } from '@/object-record/components/RecordComponentInstanceContextsWrapper'; import { SnackBarComponentInstanceContext } from '@/ui/feedback/snack-bar-manager/contexts/SnackBarComponentInstanceContext'; import { @@ -29,7 +29,7 @@ export const getJestMetadataAndApolloMocksWrapper = ({ | readonly MockedResponse, Record>[] | undefined; onInitializeJotaiStore?: (store: Store) => void; - objectMetadataItems?: ObjectMetadataItem[]; + objectMetadataItems?: EnrichedObjectMetadataItem[]; }) => { resetJotaiStore(); diff --git a/packages/twenty-front/src/testing/mock-data/users.ts b/packages/twenty-front/src/testing/mock-data/users.ts index 6f5f0fe4d5..bd1279262d 100644 --- a/packages/twenty-front/src/testing/mock-data/users.ts +++ b/packages/twenty-front/src/testing/mock-data/users.ts @@ -15,7 +15,7 @@ import { WorkspaceMemberTimeFormatEnum, } from '~/generated-metadata/graphql'; import { mockBillingPlans } from '~/testing/mock-data/billing-plans'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; type MockedUser = Pick< User, @@ -201,16 +201,18 @@ export const mockedUserData: MockedUser = { PermissionFlagType.CONNECTED_ACCOUNTS, ], twoFactorAuthenticationMethodSummary: [], - objectsPermissions: generatedMockObjectMetadataItems.map((item) => ({ - objectMetadataId: item.id, - canReadObjectRecords: true, - canUpdateObjectRecords: true, - canSoftDeleteObjectRecords: true, - canDestroyObjectRecords: true, - restrictedFields: {}, - rowLevelPermissionPredicates: [], - rowLevelPermissionPredicateGroups: [], - })), + objectsPermissions: getTestEnrichedObjectMetadataItemsMock().map( + (item) => ({ + objectMetadataId: item.id, + canReadObjectRecords: true, + canUpdateObjectRecords: true, + canSoftDeleteObjectRecords: true, + canDestroyObjectRecords: true, + restrictedFields: {}, + rowLevelPermissionPredicates: [], + rowLevelPermissionPredicateGroups: [], + }), + ), }, locale: 'en', workspaces: [{ workspace: mockCurrentWorkspace }], @@ -227,7 +229,7 @@ export const mockedLimitedPermissionsUserData: MockedUser = { ...mockedUserData, currentUserWorkspace: { ...mockedUserData.currentUserWorkspace, - objectsPermissions: generatedMockObjectMetadataItems + objectsPermissions: getTestEnrichedObjectMetadataItemsMock() .filter( (objectMetadata) => objectMetadata.nameSingular !== 'task' && @@ -265,16 +267,18 @@ export const mockedOnboardingUserData = ( currentWorkspace: mockCurrentWorkspace, currentUserWorkspace: { permissionFlags: [PermissionFlagType.WORKSPACE_MEMBERS], - objectPermissions: generatedMockObjectMetadataItems.map((item) => ({ - objectMetadataId: item.id, - canReadObjectRecords: true, - canUpdateObjectRecords: true, - canSoftDeleteObjectRecords: true, - canDestroyObjectRecords: true, - restrictedFields: {}, - rowLevelPermissionPredicates: [], - rowLevelPermissionPredicateGroups: [], - })), + objectPermissions: getTestEnrichedObjectMetadataItemsMock().map( + (item) => ({ + objectMetadataId: item.id, + canReadObjectRecords: true, + canUpdateObjectRecords: true, + canSoftDeleteObjectRecords: true, + canDestroyObjectRecords: true, + restrictedFields: {}, + rowLevelPermissionPredicates: [], + rowLevelPermissionPredicateGroups: [], + }), + ), }, locale: 'en', workspaces: [{ workspace: mockCurrentWorkspace }], diff --git a/packages/twenty-front/src/testing/utils/generateMockRecordConnection.ts b/packages/twenty-front/src/testing/utils/generateMockRecordConnection.ts index 782a512ff4..49691e1c8b 100644 --- a/packages/twenty-front/src/testing/utils/generateMockRecordConnection.ts +++ b/packages/twenty-front/src/testing/utils/generateMockRecordConnection.ts @@ -1,5 +1,5 @@ import { getRecordConnectionFromRecords } from '@/object-record/cache/utils/getRecordConnectionFromRecords'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; import { generateMockRecord } from '~/testing/utils/generateMockRecord'; @@ -20,7 +20,7 @@ export const generateMockRecordConnection = ({ ); return getRecordConnectionFromRecords({ - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), objectMetadataItem, records: prefilledRecords, computeReferences, diff --git a/packages/twenty-front/src/testing/utils/generateMockRecordNode.ts b/packages/twenty-front/src/testing/utils/generateMockRecordNode.ts index 569171aac5..948fcae225 100644 --- a/packages/twenty-front/src/testing/utils/generateMockRecordNode.ts +++ b/packages/twenty-front/src/testing/utils/generateMockRecordNode.ts @@ -1,7 +1,7 @@ import { getRecordNodeFromRecord } from '@/object-record/cache/utils/getRecordNodeFromRecord'; import { generateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/utils/generateDepthRecordGqlFieldsFromObject'; import { generateMockRecord } from '~/testing/utils/generateMockRecord'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; export const generateMockRecordNode = ({ @@ -23,12 +23,12 @@ export const generateMockRecordNode = ({ return getRecordNodeFromRecord({ record, objectMetadataItem, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), computeReferences, recordGqlFields: withDepthOneRelation ? generateDepthRecordGqlFieldsFromObject({ objectMetadataItem, - objectMetadataItems: generatedMockObjectMetadataItems, + objectMetadataItems: getTestEnrichedObjectMetadataItemsMock(), depth: 1, }) : undefined, diff --git a/packages/twenty-front/src/testing/utils/generatedMockObjectMetadataItems.ts b/packages/twenty-front/src/testing/utils/generatedMockObjectMetadataItems.ts deleted file mode 100644 index 2ce3855cee..0000000000 --- a/packages/twenty-front/src/testing/utils/generatedMockObjectMetadataItems.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -import { enrichObjectMetadataItemsWithPermissions } from '@/object-metadata/utils/enrichObjectMetadataItemsWithPermissions'; -import { generatedMockObjectMetadataItemsWithRelated } from '~/testing/utils/generatedMockObjectMetadataItemsWithRelated'; - -export const generatedMockObjectMetadataItems: ObjectMetadataItem[] = - enrichObjectMetadataItemsWithPermissions({ - objectMetadataItems: generatedMockObjectMetadataItemsWithRelated, - objectPermissionsByObjectMetadataId: {}, - }); diff --git a/packages/twenty-front/src/testing/utils/generatedMockObjectMetadataItemsWithRelated.ts b/packages/twenty-front/src/testing/utils/generatedMockObjectMetadataItemsWithRelated.ts deleted file mode 100644 index ae5ec08183..0000000000 --- a/packages/twenty-front/src/testing/utils/generatedMockObjectMetadataItemsWithRelated.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { type ObjectMetadataItemWithRelated } from '@/metadata-store/utils/splitObjectMetadataItemWithRelated'; -import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '@/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems'; - -import { mockedStandardObjectMetadataQueryResult } from '~/testing/mock-data/generated/metadata/objects/mock-objects-metadata'; - -export const generatedMockObjectMetadataItemsWithRelated: ObjectMetadataItemWithRelated[] = - mapPaginatedObjectMetadataItemsToObjectMetadataItems({ - pagedObjectMetadataItems: mockedStandardObjectMetadataQueryResult, - }); diff --git a/packages/twenty-front/src/testing/utils/getMockFieldMetadataItemOrThrow.ts b/packages/twenty-front/src/testing/utils/getMockFieldMetadataItemOrThrow.ts index c5cb403c76..68f279652e 100644 --- a/packages/twenty-front/src/testing/utils/getMockFieldMetadataItemOrThrow.ts +++ b/packages/twenty-front/src/testing/utils/getMockFieldMetadataItemOrThrow.ts @@ -1,9 +1,9 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; type GetMockFieldMetadataItemOrThrowProps = { - objectMetadataItem: ObjectMetadataItem; + objectMetadataItem: EnrichedObjectMetadataItem; fieldName: string; }; diff --git a/packages/twenty-front/src/testing/utils/getMockObjectMetadataItemOrThrow.ts b/packages/twenty-front/src/testing/utils/getMockObjectMetadataItemOrThrow.ts index 98ce72adf2..107ebf082d 100644 --- a/packages/twenty-front/src/testing/utils/getMockObjectMetadataItemOrThrow.ts +++ b/packages/twenty-front/src/testing/utils/getMockObjectMetadataItemOrThrow.ts @@ -1,11 +1,11 @@ -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { getTestEnrichedObjectMetadataItemsMock } from '~/testing/utils/getTestEnrichedObjectMetadataItemsMock'; export const getMockObjectMetadataItemOrThrow = ( nameSingular: string, -): ObjectMetadataItem => { - const objectMetadataItem = generatedMockObjectMetadataItems.find( +): EnrichedObjectMetadataItem => { + const objectMetadataItem = getTestEnrichedObjectMetadataItemsMock().find( (item) => item.nameSingular === nameSingular, ); diff --git a/packages/twenty-front/src/testing/utils/getTestEnrichedObjectMetadataItemsMock.ts b/packages/twenty-front/src/testing/utils/getTestEnrichedObjectMetadataItemsMock.ts new file mode 100644 index 0000000000..56d68eccdb --- /dev/null +++ b/packages/twenty-front/src/testing/utils/getTestEnrichedObjectMetadataItemsMock.ts @@ -0,0 +1,22 @@ +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; +import { enrichObjectMetadataItemsWithPermissions } from '@/object-metadata/utils/enrichObjectMetadataItemsWithPermissions'; +import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '@/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems'; + +import { mockedStandardObjectMetadataQueryResult } from '~/testing/mock-data/generated/metadata/objects/mock-objects-metadata'; + +let cachedItems: EnrichedObjectMetadataItem[] | undefined; + +export const getTestEnrichedObjectMetadataItemsMock = + (): EnrichedObjectMetadataItem[] => { + if (cachedItems === undefined) { + cachedItems = enrichObjectMetadataItemsWithPermissions({ + objectMetadataItems: + mapPaginatedObjectMetadataItemsToObjectMetadataItems({ + pagedObjectMetadataItems: mockedStandardObjectMetadataQueryResult, + }), + objectPermissionsByObjectMetadataId: {}, + }); + } + + return cachedItems; + }; diff --git a/packages/twenty-front/src/testing/utils/setTestObjectMetadataItemsInMetadataStore.ts b/packages/twenty-front/src/testing/utils/setTestObjectMetadataItemsInMetadataStore.ts index f7cf9c3e12..c63c779420 100644 --- a/packages/twenty-front/src/testing/utils/setTestObjectMetadataItemsInMetadataStore.ts +++ b/packages/twenty-front/src/testing/utils/setTestObjectMetadataItemsInMetadataStore.ts @@ -1,16 +1,16 @@ import { metadataStoreState } from '@/metadata-store/states/metadataStoreState'; -import { splitObjectMetadataItemWithRelated } from '@/metadata-store/utils/splitObjectMetadataItemWithRelated'; -import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { splitCompositeObjectMetadataItems } from '@/metadata-store/utils/splitCompositeObjectMetadataItems'; +import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem'; import { type createStore } from 'jotai'; type JotaiStore = ReturnType; export const setTestObjectMetadataItemsInMetadataStore = ( store: JotaiStore, - objectMetadataItems: ObjectMetadataItem[], + objectMetadataItems: EnrichedObjectMetadataItem[], ) => { const { flatObjects, flatFields, flatIndexes } = - splitObjectMetadataItemWithRelated(objectMetadataItems); + splitCompositeObjectMetadataItems(objectMetadataItems); store.set(metadataStoreState.atomFamily('objectMetadataItems'), { current: flatObjects,