Files
twenty/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemFamilySelector.ts
2023-12-10 18:10:54 +01:00

40 lines
1.1 KiB
TypeScript

import { selectorFamily } from 'recoil';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
type ObjectMetadataItemSelector = {
objectName: string;
objectNameType: 'singular' | 'plural';
};
export const objectMetadataItemFamilySelector = selectorFamily<
ObjectMetadataItem | null,
ObjectMetadataItemSelector
>({
key: 'objectMetadataItemFamilySelector',
get:
({ objectNameType, objectName }: ObjectMetadataItemSelector) =>
({ get }) => {
const objectMetadataItems = get(objectMetadataItemsState);
if (objectNameType === 'singular') {
return (
objectMetadataItems.find(
(objectMetadataItem) =>
objectMetadataItem.nameSingular === objectName,
) ?? null
);
} else if (objectNameType === 'plural') {
return (
objectMetadataItems.find(
(objectMetadataItem) =>
objectMetadataItem.namePlural === objectName,
) ?? null
);
}
return null;
},
});