refactor: rename ObjectMetadataItem to EnrichedObjectMetadataItem and clean up metadata flows (#18830)
## Summary - Renames `ObjectMetadataItem` to `EnrichedObjectMetadataItem` across the entire frontend (~440 files) to clarify that this type includes derived fields (`readableFields`, `updatableFields`, nested `fields[]`, `indexMetadatas[]`) computed at read time from the metadata store - Creates `splitObjectMetadataGqlResponse` that goes directly from a GraphQL `ObjectMetadataItemsQuery` response to flat store items (combining the old `mapPaginatedObjectMetadataItemsToObjectMetadataItems` + `splitObjectMetadataItemWithRelated` two-step flow into one call) - Removes `ObjectMetadataItemWithRelated` type and all "WithRelated" naming - Renames `generatedMockObjectMetadataItems` to `generateTestEnrichedObjectMetadataItemsMock` to make it clear this is test-only enriched data - Deletes `useLoadMockedObjectMetadataItems` hook (consolidated into `useLoadMockedMinimalMetadata`) - Ensures nothing destined for the metadata store computes `readableFields`/`updatableFields` (preventing the localStorage bloat from #18809) ## Type hierarchy (before → after) **Before:** ``` ObjectMetadataItemsQuery → mapPaginated → ObjectMetadataItemWithRelated → enrich → ObjectMetadataItem → split → FlatObjectMetadataItem (store) ``` **After:** ``` ObjectMetadataItemsQuery → splitObjectMetadataGqlResponse → FlatObjectMetadataItem (store) → mapPaginated + enrich (tests only) → EnrichedObjectMetadataItem ``` ## Test plan - [x] `npx nx typecheck twenty-front` passes - [x] `npx nx test twenty-front` passes (767 suites, 4505 tests) - [x] `npx nx lint twenty-front` passes - [ ] CI checks pass Made with [Cursor](https://cursor.com)
This commit is contained in:
@@ -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<string, unknown>;
|
||||
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({
|
||||
|
||||
Reference in New Issue
Block a user