40 lines
1.1 KiB
TypeScript
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;
|
|
},
|
|
});
|