d5a7dec117
## Summary - Renames `ObjectMetadataItem` to `EnrichedObjectMetadataItem` across the entire frontend (~440 files) to clarify that this type includes derived fields (`readableFields`, `updatableFields`, nested `fields[]`, `indexMetadatas[]`) computed at read time from the metadata store - Creates `splitObjectMetadataGqlResponse` that goes directly from a GraphQL `ObjectMetadataItemsQuery` response to flat store items (combining the old `mapPaginatedObjectMetadataItemsToObjectMetadataItems` + `splitObjectMetadataItemWithRelated` two-step flow into one call) - Removes `ObjectMetadataItemWithRelated` type and all "WithRelated" naming - Renames `generatedMockObjectMetadataItems` to `generateTestEnrichedObjectMetadataItemsMock` to make it clear this is test-only enriched data - Deletes `useLoadMockedObjectMetadataItems` hook (consolidated into `useLoadMockedMinimalMetadata`) - Ensures nothing destined for the metadata store computes `readableFields`/`updatableFields` (preventing the localStorage bloat from #18809) ## Type hierarchy (before → after) **Before:** ``` ObjectMetadataItemsQuery → mapPaginated → ObjectMetadataItemWithRelated → enrich → ObjectMetadataItem → split → FlatObjectMetadataItem (store) ``` **After:** ``` ObjectMetadataItemsQuery → splitObjectMetadataGqlResponse → FlatObjectMetadataItem (store) → mapPaginated + enrich (tests only) → EnrichedObjectMetadataItem ``` ## Test plan - [x] `npx nx typecheck twenty-front` passes - [x] `npx nx test twenty-front` passes (767 suites, 4505 tests) - [x] `npx nx lint twenty-front` passes - [ ] CI checks pass Made with [Cursor](https://cursor.com)
67 lines
2.4 KiB
TypeScript
67 lines
2.4 KiB
TypeScript
import {
|
|
CommandMenuContext,
|
|
type CommandMenuContextType,
|
|
} from '@/command-menu-item/contexts/CommandMenuContext';
|
|
import { useRegisteredCommandMenuItems } from '@/command-menu-item/hooks/useRegisteredCommandMenuItems';
|
|
import { useShouldCommandMenuItemBeRegisteredParams } from '@/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams';
|
|
import { useRunWorkflowRecordAgnosticCommands } from '@/command-menu-item/record-agnostic/workflow/hooks/useRunWorkflowRecordAgnosticCommands';
|
|
import { useRunWorkflowRecordCommands } from '@/command-menu-item/record/workflow/hooks/useRunWorkflowRecordCommands';
|
|
import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState';
|
|
import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem';
|
|
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
|
|
|
|
export const CommandMenuContextProviderDefault = ({
|
|
objectMetadataItem,
|
|
isInSidePanel,
|
|
displayType,
|
|
containerType,
|
|
children,
|
|
}: {
|
|
objectMetadataItem: EnrichedObjectMetadataItem;
|
|
isInSidePanel: CommandMenuContextType['isInSidePanel'];
|
|
displayType: CommandMenuContextType['displayType'];
|
|
containerType: CommandMenuContextType['containerType'];
|
|
children: React.ReactNode;
|
|
}) => {
|
|
const shouldBeRegisteredParams = useShouldCommandMenuItemBeRegisteredParams({
|
|
objectMetadataItem,
|
|
});
|
|
|
|
const commandMenuItems = useRegisteredCommandMenuItems(
|
|
shouldBeRegisteredParams,
|
|
);
|
|
|
|
const contextStoreTargetedRecordsRule = useAtomComponentStateValue(
|
|
contextStoreTargetedRecordsRuleComponentState,
|
|
);
|
|
|
|
const isRecordSelection =
|
|
contextStoreTargetedRecordsRule.mode === 'selection' &&
|
|
contextStoreTargetedRecordsRule.selectedRecordIds.length > 0;
|
|
|
|
const runWorkflowRecordCommands = useRunWorkflowRecordCommands({
|
|
objectMetadataItem,
|
|
skip: !isRecordSelection,
|
|
});
|
|
|
|
const runWorkflowRecordAgnosticCommands =
|
|
useRunWorkflowRecordAgnosticCommands();
|
|
|
|
return (
|
|
<CommandMenuContext.Provider
|
|
value={{
|
|
isInSidePanel,
|
|
displayType,
|
|
containerType,
|
|
commandMenuItems: [
|
|
...commandMenuItems,
|
|
...runWorkflowRecordCommands,
|
|
...runWorkflowRecordAgnosticCommands,
|
|
],
|
|
}}
|
|
>
|
|
{children}
|
|
</CommandMenuContext.Provider>
|
|
);
|
|
};
|