Files
twenty/packages/twenty-front/src/modules/object-metadata/hooks/useObjectMetadataItem.ts
T
Félix Malfait 4485e8e3db Update enums to be all caps (#12372)
- Make custom domain public (remove from lab)
- Use ALL_CAPS definition for enums
2025-05-29 14:08:36 +02:00

49 lines
1.6 KiB
TypeScript

import { useRecoilValue } from 'recoil';
import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/ObjectMetadataNotFoundError';
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { isWorkflowRelatedObjectMetadata } from '@/object-metadata/utils/isWorkflowRelatedObjectMetadata';
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
import { isDefined } from 'twenty-shared/utils';
import { FeatureFlagKey } from '~/generated-metadata/graphql';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
export const useObjectMetadataItem = ({
objectNameSingular,
}: ObjectMetadataItemIdentifier) => {
const objectMetadataItem = useRecoilValue(
objectMetadataItemFamilySelector({
objectName: objectNameSingular,
objectNameType: 'singular',
}),
);
const isWorkflowEnabled = useIsFeatureEnabled(
FeatureFlagKey.IS_WORKFLOW_ENABLED,
);
const isWorkflowToBeFiltered =
!isWorkflowEnabled && isWorkflowRelatedObjectMetadata(objectNameSingular);
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
if (isWorkflowToBeFiltered) {
throw new Error(
'Workflow is not enabled. If you want to use it, please enable it in the lab.',
);
}
if (!isDefined(objectMetadataItem)) {
throw new ObjectMetadataItemNotFoundError(
objectNameSingular,
objectMetadataItems,
);
}
return {
objectMetadataItem,
};
};