@ -1,43 +1,22 @@
|
||||
import { useRecoilValue } from 'recoil';
|
||||
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { isWorkflowRelatedObjectMetadata } from '@/object-metadata/utils/isWorkflowRelatedObjectMetadata';
|
||||
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { FeatureFlagKey } from '~/generated-metadata/graphql';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
export const useFilteredObjectMetadataItems = () => {
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
|
||||
const isWorkflowEnabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IS_WORKFLOW_ENABLED,
|
||||
);
|
||||
|
||||
const isWorkflowToBeFiltered = useCallback(
|
||||
(nameSingular: string) => {
|
||||
return (
|
||||
!isWorkflowEnabled && isWorkflowRelatedObjectMetadata(nameSingular)
|
||||
);
|
||||
},
|
||||
[isWorkflowEnabled],
|
||||
);
|
||||
|
||||
const activeNonSystemObjectMetadataItems = useMemo(
|
||||
() =>
|
||||
objectMetadataItems.filter(
|
||||
({ isActive, isSystem, nameSingular }) =>
|
||||
isActive && !isSystem && !isWorkflowToBeFiltered(nameSingular),
|
||||
({ isActive, isSystem }) => isActive && !isSystem,
|
||||
),
|
||||
[isWorkflowToBeFiltered, objectMetadataItems],
|
||||
[objectMetadataItems],
|
||||
);
|
||||
|
||||
const activeObjectMetadataItems = useMemo(
|
||||
() =>
|
||||
objectMetadataItems.filter(
|
||||
({ isActive, nameSingular }) =>
|
||||
isActive && !isWorkflowToBeFiltered(nameSingular),
|
||||
),
|
||||
[isWorkflowToBeFiltered, objectMetadataItems],
|
||||
() => objectMetadataItems.filter(({ isActive }) => isActive),
|
||||
[objectMetadataItems],
|
||||
);
|
||||
|
||||
const alphaSortedActiveNonSystemObjectMetadataItems =
|
||||
|
||||
@ -4,10 +4,7 @@ import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/Object
|
||||
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 = ({
|
||||
@ -20,21 +17,8 @@ export const useObjectMetadataItem = ({
|
||||
}),
|
||||
);
|
||||
|
||||
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,
|
||||
|
||||
Reference in New Issue
Block a user