* Proof of concept ComponentState * Migrate to createState and createFamilyState * Refactor * Fix * Fix tests * Fix lint * Fix tests * Re-enable coverage
48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import { useRecoilValue } from 'recoil';
|
|
|
|
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState.ts';
|
|
import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/ObjectMetadataNotFoundError';
|
|
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
|
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
|
import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock';
|
|
import { isNonNullable } from '~/utils/isNonNullable';
|
|
|
|
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
|
|
|
|
export const useObjectMetadataItemOnly = ({
|
|
objectNameSingular,
|
|
}: ObjectMetadataItemIdentifier) => {
|
|
const currentWorkspace = useRecoilValue(currentWorkspaceState());
|
|
|
|
const mockObjectMetadataItems = getObjectMetadataItemsMock();
|
|
|
|
let objectMetadataItem = useRecoilValue(
|
|
objectMetadataItemFamilySelector({
|
|
objectName: objectNameSingular,
|
|
objectNameType: 'singular',
|
|
}),
|
|
);
|
|
|
|
let objectMetadataItems = useRecoilValue(objectMetadataItemsState());
|
|
|
|
if (currentWorkspace?.activationStatus !== 'active') {
|
|
objectMetadataItem =
|
|
mockObjectMetadataItems.find(
|
|
(objectMetadataItem) =>
|
|
objectMetadataItem.nameSingular === objectNameSingular,
|
|
) ?? null;
|
|
objectMetadataItems = mockObjectMetadataItems;
|
|
}
|
|
|
|
if (!isNonNullable(objectMetadataItem)) {
|
|
throw new ObjectMetadataItemNotFoundError(
|
|
objectNameSingular,
|
|
objectMetadataItems,
|
|
);
|
|
}
|
|
|
|
return {
|
|
objectMetadataItem,
|
|
};
|
|
};
|