Files
twenty/packages/twenty-front/src/modules/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems.ts
Charles Bochet 1fa55bfd02 Fix bugs tied to jotai migration (#18227)
Fixing a few bugs:
- CommandMenu not reactive
- Filtering on index view infinite loop
2026-02-25 17:11:12 +01:00

55 lines
2.0 KiB
TypeScript

import { type IndexFieldMetadataItem } from '@/object-metadata/types/IndexFieldMetadataItem';
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';
type mapPaginatedObjectMetadataItemsToObjectMetadataItemsArgs = {
pagedObjectMetadataItems: ObjectMetadataItemsQuery | undefined;
};
export const mapPaginatedObjectMetadataItemsToObjectMetadataItems = ({
pagedObjectMetadataItems,
}: mapPaginatedObjectMetadataItemsToObjectMetadataItemsArgs) => {
const formattedObjects: Omit<
ObjectMetadataItem,
'readableFields' | 'updatableFields'
>[] =
pagedObjectMetadataItems?.objects.edges.map((object) => {
const labelIdentifierFieldMetadataId =
objectMetadataItemSchema.shape.labelIdentifierFieldMetadataId.parse(
object.node.labelIdentifierFieldMetadataId,
);
const { fieldsList, indexMetadataList, ...objectWithoutFieldsList } =
object.node;
return {
universalIdentifier: object.node.id,
...objectWithoutFieldsList,
fields: fieldsList.map((field) => ({
universalIdentifier: field.id,
...field,
})),
labelIdentifierFieldMetadataId,
indexMetadatas: indexMetadataList.map(
(index) =>
({
...index,
indexFieldMetadatas: index.indexFieldMetadataList.map(
(indexFieldMetadata) =>
({
...indexFieldMetadata,
}) satisfies IndexFieldMetadataItem,
),
}) satisfies IndexMetadataItem,
),
} satisfies Omit<
ObjectMetadataItem,
'readableFields' | 'updatableFields'
>;
}) ?? [];
return formattedObjects;
};