From d48b2b32648769a52c68e58e393a88640f424e4c Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Thu, 13 Mar 2025 17:26:07 +0100 Subject: [PATCH] Only store current object metadata id in state (#10856) Fix group by refresh when adding a select field --- .../RecordActionMenuEntriesSetter.tsx | 25 +++++++++++++------ .../components/RecordIndexActionMenu.tsx | 8 +++--- .../components/RecordShowActionMenu.tsx | 8 +++--- .../RecordShowRightDrawerActionMenu.tsx | 8 +++--- .../command-menu/components/CommandMenu.tsx | 16 ++++++------ .../components/CommandMenuContainer.tsx | 16 +++++++++--- .../components/CommandMenuTopBar.tsx | 12 +++++---- .../ResetContextToSelectionCommandButton.tsx | 8 +++--- .../command-menu/hooks/useCommandMenu.ts | 6 ++--- .../useCopyContextStoreAndActionMenuStates.ts | 10 ++++---- .../hooks/useResetContextStoreStates.ts | 4 +-- .../MainContextStoreProviderEffect.tsx | 16 ++++++------ ...seContextStoreObjectMetadataItemOrThrow.ts | 11 +++++--- ...seFindManyRecordsSelectedInContextStore.ts | 11 +++++--- ...rentObjectMetadataItemIdComponentState.ts} | 7 +++--- ...ptionsDropdownRecordGroupFieldsContent.tsx | 2 +- .../record-group/hooks/useSetRecordGroup.ts | 19 +++++++++++--- ...ecordIndexLoadBaseOnContextStoreEffect.tsx | 6 ++--- .../SignInBackgroundMockContainer.tsx | 10 +++++--- .../SignInBackgroundMockContainerEffect.tsx | 15 +++++------ .../components/ViewBarRecordFilterEffect.tsx | 15 +++++------ .../ViewBarRecordFilterGroupEffect.tsx | 13 +++++----- .../components/ViewBarRecordSortEffect.tsx | 15 ++++++----- .../pages/object-record/RecordIndexPage.tsx | 8 +++--- .../decorators/ContextStoreDecorator.tsx | 10 ++++---- .../testing/jest/JestContextStoreSetter.tsx | 13 +++++----- 26 files changed, 169 insertions(+), 123 deletions(-) rename packages/twenty-front/src/modules/context-store/states/{contextStoreCurrentObjectMetadataItemComponentState.ts => contextStoreCurrentObjectMetadataItemIdComponentState.ts} (55%) diff --git a/packages/twenty-front/src/modules/action-menu/actions/record-actions/components/RecordActionMenuEntriesSetter.tsx b/packages/twenty-front/src/modules/action-menu/actions/record-actions/components/RecordActionMenuEntriesSetter.tsx index 3e83e18e9..9ed6235c0 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/record-actions/components/RecordActionMenuEntriesSetter.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/record-actions/components/RecordActionMenuEntriesSetter.tsx @@ -2,17 +2,28 @@ import { RegisterRecordActionEffect } from '@/action-menu/actions/record-actions import { WorkflowRunRecordActionMenuEntrySetterEffect } from '@/action-menu/actions/record-actions/workflow-run-record-actions/components/WorkflowRunRecordActionMenuEntrySetter'; import { getActionConfig } from '@/action-menu/actions/utils/getActionConfig'; import { getActionViewType } from '@/action-menu/actions/utils/getActionViewType'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { COMMAND_MENU_COMPONENT_INSTANCE_ID } from '@/command-menu/constants/CommandMenuComponentInstanceId'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; +import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; +import { useRecoilValue } from 'recoil'; import { isDefined } from 'twenty-shared'; import { FeatureFlagKey } from '~/generated/graphql'; export const RecordActionMenuEntriesSetter = () => { - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, + COMMAND_MENU_COMPONENT_INSTANCE_ID, + ); + + const objectMetadataItems = useRecoilValue(objectMetadataItemsState); + + const objectMetadataItem = objectMetadataItems.find( + (objectMetadataItem) => + objectMetadataItem.id === contextStoreCurrentObjectMetadataItemId, ); const contextStoreTargetedRecordsRule = useRecoilComponentValueV2( @@ -27,7 +38,7 @@ export const RecordActionMenuEntriesSetter = () => { FeatureFlagKey.IsWorkflowEnabled, ); - if (!isDefined(contextStoreCurrentObjectMetadataItem)) { + if (!isDefined(objectMetadataItem)) { return null; } @@ -36,7 +47,7 @@ export const RecordActionMenuEntriesSetter = () => { contextStoreTargetedRecordsRule, ); - const actionConfig = getActionConfig(contextStoreCurrentObjectMetadataItem); + const actionConfig = getActionConfig(objectMetadataItem); const actionsToRegister = isDefined(viewType) ? Object.values(actionConfig ?? {}).filter((action) => @@ -50,7 +61,7 @@ export const RecordActionMenuEntriesSetter = () => { ))} @@ -58,7 +69,7 @@ export const RecordActionMenuEntriesSetter = () => { contextStoreTargetedRecordsRule?.mode === 'selection' && contextStoreTargetedRecordsRule?.selectedRecordIds.length === 1 && ( )} diff --git a/packages/twenty-front/src/modules/action-menu/components/RecordIndexActionMenu.tsx b/packages/twenty-front/src/modules/action-menu/components/RecordIndexActionMenu.tsx index ee57a95c9..5572a6b53 100644 --- a/packages/twenty-front/src/modules/action-menu/components/RecordIndexActionMenu.tsx +++ b/packages/twenty-front/src/modules/action-menu/components/RecordIndexActionMenu.tsx @@ -6,7 +6,7 @@ import { ActionMenuConfirmationModals } from '@/action-menu/components/ActionMen import { RecordIndexActionMenuButtons } from '@/action-menu/components/RecordIndexActionMenuButtons'; import { RecordIndexActionMenuDropdown } from '@/action-menu/components/RecordIndexActionMenuDropdown'; import { ActionMenuContext } from '@/action-menu/contexts/ActionMenuContext'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { isRecordIndexLoadMoreLockedComponentState } from '@/object-record/record-index/states/isRecordIndexLoadMoreLockedComponentState'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2'; @@ -15,8 +15,8 @@ import { useIsMobile } from 'twenty-ui'; import { FeatureFlagKey } from '~/generated/graphql'; export const RecordIndexActionMenu = ({ indexId }: { indexId: string }) => { - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, ); const isWorkflowEnabled = useIsFeatureEnabled( @@ -32,7 +32,7 @@ export const RecordIndexActionMenu = ({ indexId }: { indexId: string }) => { return ( <> - {contextStoreCurrentObjectMetadataItem && ( + {contextStoreCurrentObjectMetadataItemId && ( { - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, ); const isWorkflowEnabled = useIsFeatureEnabled( @@ -20,7 +20,7 @@ export const RecordShowActionMenu = () => { return ( <> - {contextStoreCurrentObjectMetadataItem && ( + {contextStoreCurrentObjectMetadataItemId && ( { - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, ); const contextStoreTargetedRecordsRule = useRecoilComponentValueV2( @@ -30,7 +30,7 @@ export const RecordShowRightDrawerActionMenu = () => { return ( <> - {contextStoreCurrentObjectMetadataItem && ( + {contextStoreCurrentObjectMetadataItemId && ( { commandMenuSearch, }); - const previousContextStoreCurrentObjectMetadataItem = + const previousContextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + contextStoreCurrentObjectMetadataItemIdComponentState, 'command-menu-previous', ); - const currentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, - ); + const { objectMetadataItem: currentObjectMetadataItem } = + useContextStoreObjectMetadataItemOrThrow(); const commandGroups: CommandGroupConfig[] = [ { @@ -74,7 +74,7 @@ export const CommandMenu = () => { const selectableItemIds = selectableItems.map((item) => item.id); - if (isDefined(previousContextStoreCurrentObjectMetadataItem)) { + if (isDefined(previousContextStoreCurrentObjectMetadataItemId)) { selectableItemIds.unshift(RESET_CONTEXT_TO_SELECTION); } @@ -84,7 +84,7 @@ export const CommandMenu = () => { selectableItemIds={selectableItemIds} noResults={noResults} > - {isDefined(previousContextStoreCurrentObjectMetadataItem) && ( + {isDefined(previousContextStoreCurrentObjectMetadataItemId) && ( diff --git a/packages/twenty-front/src/modules/command-menu/components/CommandMenuContainer.tsx b/packages/twenty-front/src/modules/command-menu/components/CommandMenuContainer.tsx index c94309276..af14c887d 100644 --- a/packages/twenty-front/src/modules/command-menu/components/CommandMenuContainer.tsx +++ b/packages/twenty-front/src/modules/command-menu/components/CommandMenuContainer.tsx @@ -13,9 +13,10 @@ import { useCommandMenuHotKeys } from '@/command-menu/hooks/useCommandMenuHotKey import { commandMenuSearchState } from '@/command-menu/states/commandMenuSearchState'; import { isCommandMenuOpenedState } from '@/command-menu/states/isCommandMenuOpenedState'; import { CommandMenuAnimationVariant } from '@/command-menu/types/CommandMenuAnimationVariant'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; +import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { RecordFilterGroupsComponentInstanceContext } from '@/object-record/record-filter-group/states/context/RecordFilterGroupsComponentInstanceContext'; import { RecordFiltersComponentInstanceContext } from '@/object-record/record-filter/states/context/RecordFiltersComponentInstanceContext'; import { RecordSortsComponentInstanceContext } from '@/object-record/record-sort/states/context/RecordSortsComponentInstanceContext'; @@ -87,20 +88,27 @@ export const CommandMenuContainer = ({ const setCommandMenuSearch = useSetRecoilState(commandMenuSearchState); - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const objectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, COMMAND_MENU_COMPONENT_INSTANCE_ID, ); + const objectMetadataItems = useRecoilValue(objectMetadataItemsState); + + const objectMetadataItem = objectMetadataItems.find( + (objectMetadataItem) => objectMetadataItem.id === objectMetadataItemId, + ); + const currentViewId = useRecoilComponentValueV2( contextStoreCurrentViewIdComponentState, COMMAND_MENU_COMPONENT_INSTANCE_ID, ); const recordIndexId = getRecordIndexIdFromObjectNamePluralAndViewId( - contextStoreCurrentObjectMetadataItem?.namePlural ?? '', + objectMetadataItem?.namePlural ?? '', currentViewId ?? '', ); + return ( { const { closeCommandMenu, goBackFromCommandMenu } = useCommandMenu(); - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, + COMMAND_MENU_COMPONENT_INSTANCE_ID, ); const commandMenuPage = useRecoilValue(commandMenuPageState); @@ -129,11 +131,11 @@ export const CommandMenuTopBar = () => { )} - {isDefined(contextStoreCurrentObjectMetadataItem) && + {isDefined(contextStoreCurrentObjectMetadataItemId) && commandMenuPage !== CommandMenuPages.SearchRecords ? ( ) : ( diff --git a/packages/twenty-front/src/modules/command-menu/components/ResetContextToSelectionCommandButton.tsx b/packages/twenty-front/src/modules/command-menu/components/ResetContextToSelectionCommandButton.tsx index 2f6ae8621..459a0216e 100644 --- a/packages/twenty-front/src/modules/command-menu/components/ResetContextToSelectionCommandButton.tsx +++ b/packages/twenty-front/src/modules/command-menu/components/ResetContextToSelectionCommandButton.tsx @@ -2,7 +2,7 @@ import { CommandMenuContextRecordsChip } from '@/command-menu/components/Command import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; import { RESET_CONTEXT_TO_SELECTION } from '@/command-menu/constants/ResetContextToSelection'; import { useResetPreviousCommandMenuContext } from '@/command-menu/hooks/useResetPreviousCommandMenuContext'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; @@ -17,8 +17,8 @@ export const ResetContextToSelectionCommandButton = () => { 'command-menu-previous', ); - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, 'command-menu-previous', ); @@ -26,7 +26,7 @@ export const ResetContextToSelectionCommandButton = () => { const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => - objectMetadataItem.id === contextStoreCurrentObjectMetadataItem?.id, + objectMetadataItem.id === contextStoreCurrentObjectMetadataItemId, ); const { resetPreviousCommandMenuContext } = diff --git a/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenu.ts b/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenu.ts index 97995edb7..ec3a0dcb3 100644 --- a/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenu.ts +++ b/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenu.ts @@ -33,7 +33,7 @@ import { hasUserSelectedCommandState } from '@/command-menu/states/hasUserSelect import { isCommandMenuClosingState } from '@/command-menu/states/isCommandMenuClosingState'; import { CommandMenuPages } from '@/command-menu/types/CommandMenuPages'; import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState'; import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState'; @@ -374,10 +374,10 @@ export const useCommandMenu = () => { } set( - contextStoreCurrentObjectMetadataItemComponentState.atomFamily({ + contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({ instanceId: pageComponentInstanceId, }), - objectMetadataItem, + objectMetadataItem.id, ); set( diff --git a/packages/twenty-front/src/modules/command-menu/hooks/useCopyContextStoreAndActionMenuStates.ts b/packages/twenty-front/src/modules/command-menu/hooks/useCopyContextStoreAndActionMenuStates.ts index 607ed17f9..b07e0d67b 100644 --- a/packages/twenty-front/src/modules/command-menu/hooks/useCopyContextStoreAndActionMenuStates.ts +++ b/packages/twenty-front/src/modules/command-menu/hooks/useCopyContextStoreAndActionMenuStates.ts @@ -1,5 +1,5 @@ import { actionMenuEntriesComponentState } from '@/action-menu/states/actionMenuEntriesComponentState'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState'; import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState'; @@ -17,19 +17,19 @@ export const useCopyContextStoreStates = () => { instanceIdToCopyFrom: string; instanceIdToCopyTo: string; }) => { - const contextStoreCurrentObjectMetadataItem = snapshot + const contextStoreCurrentObjectMetadataItemId = snapshot .getLoadable( - contextStoreCurrentObjectMetadataItemComponentState.atomFamily({ + contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({ instanceId: instanceIdToCopyFrom, }), ) .getValue(); set( - contextStoreCurrentObjectMetadataItemComponentState.atomFamily({ + contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({ instanceId: instanceIdToCopyTo, }), - contextStoreCurrentObjectMetadataItem, + contextStoreCurrentObjectMetadataItemId, ); const contextStoreTargetedRecordsRule = snapshot diff --git a/packages/twenty-front/src/modules/command-menu/hooks/useResetContextStoreStates.ts b/packages/twenty-front/src/modules/command-menu/hooks/useResetContextStoreStates.ts index f90a0f3e9..9efa9ff5e 100644 --- a/packages/twenty-front/src/modules/command-menu/hooks/useResetContextStoreStates.ts +++ b/packages/twenty-front/src/modules/command-menu/hooks/useResetContextStoreStates.ts @@ -1,5 +1,5 @@ import { actionMenuEntriesComponentState } from '@/action-menu/states/actionMenuEntriesComponentState'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState'; import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState'; @@ -11,7 +11,7 @@ export const useResetContextStoreStates = () => { const resetContextStoreStates = useRecoilCallback(({ set }) => { return (instanceId: string) => { set( - contextStoreCurrentObjectMetadataItemComponentState.atomFamily({ + contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({ instanceId, }), undefined, diff --git a/packages/twenty-front/src/modules/context-store/components/MainContextStoreProviderEffect.tsx b/packages/twenty-front/src/modules/context-store/components/MainContextStoreProviderEffect.tsx index db86e3fba..34966932d 100644 --- a/packages/twenty-front/src/modules/context-store/components/MainContextStoreProviderEffect.tsx +++ b/packages/twenty-front/src/modules/context-store/components/MainContextStoreProviderEffect.tsx @@ -1,5 +1,5 @@ import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState'; import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType'; @@ -40,10 +40,10 @@ export const MainContextStoreProviderEffect = ({ ); const [ - contextStoreCurrentObjectMetadataItem, - setContextStoreCurrentObjectMetadataItem, + contextStoreCurrentObjectMetadataItemId, + setContextStoreCurrentObjectMetadataItemId, ] = useRecoilComponentStateV2( - contextStoreCurrentObjectMetadataItemComponentState, + contextStoreCurrentObjectMetadataItemIdComponentState, MAIN_CONTEXT_STORE_INSTANCE_ID, ); @@ -54,8 +54,8 @@ export const MainContextStoreProviderEffect = ({ ); useEffect(() => { - if (contextStoreCurrentObjectMetadataItem?.id !== objectMetadataItem.id) { - setContextStoreCurrentObjectMetadataItem(objectMetadataItem); + if (contextStoreCurrentObjectMetadataItemId !== objectMetadataItem.id) { + setContextStoreCurrentObjectMetadataItemId(objectMetadataItem.id); } setLastVisitedViewForObjectMetadataNamePlural({ @@ -71,11 +71,11 @@ export const MainContextStoreProviderEffect = ({ setContextStoreCurrentViewId(viewId); } }, [ - contextStoreCurrentObjectMetadataItem, + contextStoreCurrentObjectMetadataItemId, contextStoreCurrentViewId, objectMetadataItem, objectMetadataItem.namePlural, - setContextStoreCurrentObjectMetadataItem, + setContextStoreCurrentObjectMetadataItemId, setContextStoreCurrentViewId, setLastVisitedObjectMetadataId, setLastVisitedViewForObjectMetadataNamePlural, diff --git a/packages/twenty-front/src/modules/context-store/hooks/useContextStoreObjectMetadataItemOrThrow.ts b/packages/twenty-front/src/modules/context-store/hooks/useContextStoreObjectMetadataItemOrThrow.ts index 5e09defb6..6f49badcc 100644 --- a/packages/twenty-front/src/modules/context-store/hooks/useContextStoreObjectMetadataItemOrThrow.ts +++ b/packages/twenty-front/src/modules/context-store/hooks/useContextStoreObjectMetadataItemOrThrow.ts @@ -1,14 +1,19 @@ -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; +import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; export const useContextStoreObjectMetadataItemOrThrow = ( contextStoreInstanceId?: string, ) => { - const objectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const objectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, contextStoreInstanceId, ); + const { objectMetadataItem } = useObjectMetadataItemById({ + objectId: objectMetadataItemId ?? '', + }); + if (!objectMetadataItem) { throw new Error('Object metadata item is not set in context store'); } diff --git a/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts b/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts index eb89af04d..02a84b96c 100644 --- a/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts +++ b/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts @@ -1,7 +1,8 @@ -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; import { computeContextStoreFilters } from '@/context-store/utils/computeContextStoreFilters'; +import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { useFilterValueDependencies } from '@/object-record/record-filter/hooks/useFilterValueDependencies'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; @@ -13,11 +14,15 @@ export const useFindManyRecordsSelectedInContextStore = ({ instanceId?: string; limit?: number; }) => { - const objectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, instanceId, ); + const { objectMetadataItem } = useObjectMetadataItemById({ + objectId: contextStoreCurrentObjectMetadataItemId ?? '', + }); + const contextStoreTargetedRecordsRule = useRecoilComponentValueV2( contextStoreTargetedRecordsRuleComponentState, instanceId, diff --git a/packages/twenty-front/src/modules/context-store/states/contextStoreCurrentObjectMetadataItemComponentState.ts b/packages/twenty-front/src/modules/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState.ts similarity index 55% rename from packages/twenty-front/src/modules/context-store/states/contextStoreCurrentObjectMetadataItemComponentState.ts rename to packages/twenty-front/src/modules/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState.ts index 4d9d8eb98..1528f047c 100644 --- a/packages/twenty-front/src/modules/context-store/states/contextStoreCurrentObjectMetadataItemComponentState.ts +++ b/packages/twenty-front/src/modules/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState.ts @@ -1,10 +1,9 @@ import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; -import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { createComponentStateV2 } from '@/ui/utilities/state/component-state/utils/createComponentStateV2'; -export const contextStoreCurrentObjectMetadataItemComponentState = - createComponentStateV2({ - key: 'contextStoreCurrentObjectMetadataItemComponentState', +export const contextStoreCurrentObjectMetadataItemIdComponentState = + createComponentStateV2({ + key: 'contextStoreCurrentObjectMetadataItemIdComponentState', defaultValue: undefined, componentInstanceContext: ContextStoreComponentInstanceContext, }); diff --git a/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx b/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx index 7e2908b55..5cdfebfe0 100644 --- a/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx +++ b/packages/twenty-front/src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx @@ -24,12 +24,12 @@ import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownM import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; import { ViewType } from '@/views/types/ViewType'; +import { useLingui } from '@lingui/react/macro'; import { useLocation } from 'react-router-dom'; import { useSetRecoilState } from 'recoil'; import { isDefined } from 'twenty-shared'; import { FieldMetadataType } from '~/generated-metadata/graphql'; import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; -import { useLingui } from '@lingui/react/macro'; export const ObjectOptionsDropdownRecordGroupFieldsContent = () => { const { t } = useLingui(); diff --git a/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroup.ts b/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroup.ts index 435bccf42..9cbc214d1 100644 --- a/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroup.ts +++ b/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroup.ts @@ -1,26 +1,37 @@ import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; +import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { recordGroupDefinitionFamilyState } from '@/object-record/record-group/states/recordGroupDefinitionFamilyState'; import { recordGroupFieldMetadataComponentState } from '@/object-record/record-group/states/recordGroupFieldMetadataComponentState'; import { recordGroupIdsComponentState } from '@/object-record/record-group/states/recordGroupIdsComponentState'; import { RecordGroupDefinition } from '@/object-record/record-group/types/RecordGroupDefinition'; import { getSnapshotValue } from '@/ui/utilities/state/utils/getSnapshotValue'; import { useRecoilCallback } from 'recoil'; +import { isDefined } from 'twenty-shared'; import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; export const useSetRecordGroup = () => { return useRecoilCallback( ({ snapshot, set }) => (recordGroups: RecordGroupDefinition[], recordIndexId: string) => { - const objectMetadataItem = snapshot + const objectMetadataItemId = snapshot .getLoadable( - contextStoreCurrentObjectMetadataItemComponentState.atomFamily({ + contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({ instanceId: MAIN_CONTEXT_STORE_INSTANCE_ID, }), ) .getValue(); - if (!objectMetadataItem) { + const objectMetadataItems = snapshot + .getLoadable(objectMetadataItemsState) + .getValue(); + + const objectMetadataItem = objectMetadataItems.find( + (objectMetadataItem) => + objectMetadataItem.id === objectMetadataItemId, + ); + + if (!isDefined(objectMetadataItem)) { return; } diff --git a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexLoadBaseOnContextStoreEffect.tsx b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexLoadBaseOnContextStoreEffect.tsx index 1521b2a5f..dc6ce2dfb 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexLoadBaseOnContextStoreEffect.tsx +++ b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexLoadBaseOnContextStoreEffect.tsx @@ -1,4 +1,4 @@ -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { useLoadRecordIndexStates } from '@/object-record/record-index/hooks/useLoadRecordIndexStates'; import { prefetchViewFromViewIdFamilySelector } from '@/prefetch/states/selector/prefetchViewFromViewIdFamilySelector'; @@ -23,9 +23,7 @@ export const RecordIndexLoadBaseOnContextStoreEffect = () => { }), ); - const objectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, - ); + const { objectMetadataItem } = useContextStoreObjectMetadataItemOrThrow(); useEffect(() => { if (loadedViewId === contextStoreCurrentViewId) { diff --git a/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInBackgroundMockContainer.tsx b/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInBackgroundMockContainer.tsx index 0aebb6f2b..ba8786471 100644 --- a/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInBackgroundMockContainer.tsx +++ b/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInBackgroundMockContainer.tsx @@ -2,7 +2,7 @@ import styled from '@emotion/styled'; import { ActionMenuComponentInstanceContext } from '@/action-menu/states/contexts/ActionMenuComponentInstanceContext'; import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { RecordFilterGroupsComponentInstanceContext } from '@/object-record/record-filter-group/states/context/RecordFilterGroupsComponentInstanceContext'; @@ -32,11 +32,15 @@ export const SignInBackgroundMockContainer = () => { const objectMetadataItems = useRecoilValue(objectMetadataItemsState); - const objectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const objectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, MAIN_CONTEXT_STORE_INSTANCE_ID, ); + const objectMetadataItem = objectMetadataItems.find( + (objectMetadataItem) => objectMetadataItem.id === objectMetadataItemId, + ); + return ( { - const setContextStoreCurrentObjectMetadataItem = useSetRecoilComponentStateV2( - contextStoreCurrentObjectMetadataItemComponentState, - MAIN_CONTEXT_STORE_INSTANCE_ID, - ); + const setContextStoreCurrentObjectMetadataItemId = + useSetRecoilComponentStateV2( + contextStoreCurrentObjectMetadataItemIdComponentState, + MAIN_CONTEXT_STORE_INSTANCE_ID, + ); const { setAvailableTableColumns, setOnEntityCountChange } = useRecordTable({ recordTableId, @@ -63,7 +64,7 @@ export const SignInBackgroundMockContainerEffect = ({ recordTableId, ); - setContextStoreCurrentObjectMetadataItem(objectMetadataItem); + setContextStoreCurrentObjectMetadataItemId(objectMetadataItem.id); }, [ setViewObjectMetadataId, setAvailableFieldDefinitions, @@ -71,7 +72,7 @@ export const SignInBackgroundMockContainerEffect = ({ setAvailableTableColumns, setTableColumns, recordTableId, - setContextStoreCurrentObjectMetadataItem, + setContextStoreCurrentObjectMetadataItemId, ]); useEffect(() => { diff --git a/packages/twenty-front/src/modules/views/components/ViewBarRecordFilterEffect.tsx b/packages/twenty-front/src/modules/views/components/ViewBarRecordFilterEffect.tsx index 537a77f2a..99f2d1344 100644 --- a/packages/twenty-front/src/modules/views/components/ViewBarRecordFilterEffect.tsx +++ b/packages/twenty-front/src/modules/views/components/ViewBarRecordFilterEffect.tsx @@ -1,4 +1,5 @@ -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { COMMAND_MENU_COMPONENT_INSTANCE_ID } from '@/command-menu/constants/CommandMenuComponentInstanceId'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { useFilterableFieldMetadataItems } from '@/object-record/record-filter/hooks/useFilterableFieldMetadataItems'; import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState'; @@ -17,8 +18,9 @@ export const ViewBarRecordFilterEffect = () => { contextStoreCurrentViewIdComponentState, ); - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, + COMMAND_MENU_COMPONENT_INSTANCE_ID, ); const currentView = useRecoilValue( @@ -42,14 +44,13 @@ export const ViewBarRecordFilterEffect = () => { ); const { filterableFieldMetadataItems } = useFilterableFieldMetadataItems( - contextStoreCurrentObjectMetadataItem?.id, + contextStoreCurrentObjectMetadataItemId ?? '', ); useEffect(() => { if (isDefined(currentView) && !hasInitializedCurrentRecordFilters) { if ( - currentView.objectMetadataId !== - contextStoreCurrentObjectMetadataItem?.id + currentView.objectMetadataId !== contextStoreCurrentObjectMetadataItemId ) { return; } @@ -71,8 +72,8 @@ export const ViewBarRecordFilterEffect = () => { filterableFieldMetadataItems, hasInitializedCurrentRecordFilters, setHasInitializedCurrentRecordFilters, - contextStoreCurrentObjectMetadataItem?.id, currentView, + contextStoreCurrentObjectMetadataItemId, ]); return null; diff --git a/packages/twenty-front/src/modules/views/components/ViewBarRecordFilterGroupEffect.tsx b/packages/twenty-front/src/modules/views/components/ViewBarRecordFilterGroupEffect.tsx index f5df1f9da..60b2d1289 100644 --- a/packages/twenty-front/src/modules/views/components/ViewBarRecordFilterGroupEffect.tsx +++ b/packages/twenty-front/src/modules/views/components/ViewBarRecordFilterGroupEffect.tsx @@ -1,4 +1,5 @@ -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { COMMAND_MENU_COMPONENT_INSTANCE_ID } from '@/command-menu/constants/CommandMenuComponentInstanceId'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { currentRecordFilterGroupsComponentState } from '@/object-record/record-filter-group/states/currentRecordFilterGroupsComponentState'; import { prefetchViewFromViewIdFamilySelector } from '@/prefetch/states/selector/prefetchViewFromViewIdFamilySelector'; @@ -16,8 +17,9 @@ export const ViewBarRecordFilterGroupEffect = () => { contextStoreCurrentViewIdComponentState, ); - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, + COMMAND_MENU_COMPONENT_INSTANCE_ID, ); const currentView = useRecoilValue( @@ -43,8 +45,7 @@ export const ViewBarRecordFilterGroupEffect = () => { useEffect(() => { if (isDefined(currentView) && !hasInitializedCurrentRecordFilterGroups) { if ( - currentView.objectMetadataId !== - contextStoreCurrentObjectMetadataItem?.id + currentView.objectMetadataId !== contextStoreCurrentObjectMetadataItemId ) { return; } @@ -64,7 +65,7 @@ export const ViewBarRecordFilterGroupEffect = () => { setCurrentRecordFilterGroups, hasInitializedCurrentRecordFilterGroups, setHasInitializedCurrentRecordFilterGroups, - contextStoreCurrentObjectMetadataItem?.id, + contextStoreCurrentObjectMetadataItemId, currentView, ]); diff --git a/packages/twenty-front/src/modules/views/components/ViewBarRecordSortEffect.tsx b/packages/twenty-front/src/modules/views/components/ViewBarRecordSortEffect.tsx index cbf6e58e8..ff609eea2 100644 --- a/packages/twenty-front/src/modules/views/components/ViewBarRecordSortEffect.tsx +++ b/packages/twenty-front/src/modules/views/components/ViewBarRecordSortEffect.tsx @@ -1,13 +1,12 @@ -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { COMMAND_MENU_COMPONENT_INSTANCE_ID } from '@/command-menu/constants/CommandMenuComponentInstanceId'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { currentRecordSortsComponentState } from '@/object-record/record-sort/states/currentRecordSortsComponentState'; import { prefetchViewFromViewIdFamilySelector } from '@/prefetch/states/selector/prefetchViewFromViewIdFamilySelector'; import { useRecoilComponentFamilyStateV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyStateV2'; - import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2'; import { hasInitializedCurrentRecordSortsComponentFamilyState } from '@/views/states/hasInitializedCurrentRecordSortsComponentFamilyState'; - import { mapViewSortsToSorts } from '@/views/utils/mapViewSortsToSorts'; import { useEffect } from 'react'; import { useRecoilValue } from 'recoil'; @@ -18,8 +17,9 @@ export const ViewBarRecordSortEffect = () => { contextStoreCurrentViewIdComponentState, ); - const contextStoreCurrentObjectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, + COMMAND_MENU_COMPONENT_INSTANCE_ID, ); const currentView = useRecoilValue( @@ -45,8 +45,7 @@ export const ViewBarRecordSortEffect = () => { useEffect(() => { if (isDefined(currentView) && !hasInitializedCurrentRecordSorts) { if ( - currentView.objectMetadataId !== - contextStoreCurrentObjectMetadataItem?.id + currentView.objectMetadataId !== contextStoreCurrentObjectMetadataItemId ) { return; } @@ -60,7 +59,7 @@ export const ViewBarRecordSortEffect = () => { hasInitializedCurrentRecordSorts, currentView, setCurrentRecordSorts, - contextStoreCurrentObjectMetadataItem, + contextStoreCurrentObjectMetadataItemId, setHasInitializedCurrentRecordSorts, ]); diff --git a/packages/twenty-front/src/pages/object-record/RecordIndexPage.tsx b/packages/twenty-front/src/pages/object-record/RecordIndexPage.tsx index 6585b7fbc..50819f3c4 100644 --- a/packages/twenty-front/src/pages/object-record/RecordIndexPage.tsx +++ b/packages/twenty-front/src/pages/object-record/RecordIndexPage.tsx @@ -1,5 +1,5 @@ import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; import { RecordIndexContainerGater } from '@/object-record/record-index/components/RecordIndexContainerGater'; @@ -13,13 +13,13 @@ export const RecordIndexPage = () => { MAIN_CONTEXT_STORE_INSTANCE_ID, ); - const objectMetadataItem = useRecoilComponentValueV2( - contextStoreCurrentObjectMetadataItemComponentState, + const contextStoreCurrentObjectMetadataItemId = useRecoilComponentValueV2( + contextStoreCurrentObjectMetadataItemIdComponentState, MAIN_CONTEXT_STORE_INSTANCE_ID, ); if ( - isUndefined(objectMetadataItem) || + isUndefined(contextStoreCurrentObjectMetadataItemId) || !isNonEmptyString(contextStoreCurrentViewId) ) { return null; diff --git a/packages/twenty-front/src/testing/decorators/ContextStoreDecorator.tsx b/packages/twenty-front/src/testing/decorators/ContextStoreDecorator.tsx index 7750990ac..593ab3f38 100644 --- a/packages/twenty-front/src/testing/decorators/ContextStoreDecorator.tsx +++ b/packages/twenty-front/src/testing/decorators/ContextStoreDecorator.tsx @@ -2,7 +2,7 @@ import { Decorator } from '@storybook/react'; import { useEffect, useState } from 'react'; import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; -import { contextStoreCurrentObjectMetadataItemComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemComponentState'; +import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2'; import { isUndefined } from '@sniptt/guards'; @@ -17,8 +17,8 @@ export const ContextStoreDecorator: Decorator = (Story, context) => { componentInstanceId = MAIN_CONTEXT_STORE_INSTANCE_ID; } - const setCurrentObjectMetadataItem = useSetRecoilComponentStateV2( - contextStoreCurrentObjectMetadataItemComponentState, + const setCurrentObjectMetadataItemId = useSetRecoilComponentStateV2( + contextStoreCurrentObjectMetadataItemIdComponentState, componentInstanceId, ); @@ -27,9 +27,9 @@ export const ContextStoreDecorator: Decorator = (Story, context) => { const objectMetadataItem = getMockCompanyObjectMetadataItem(); useEffect(() => { - setCurrentObjectMetadataItem(objectMetadataItem); + setCurrentObjectMetadataItemId(objectMetadataItem.id); setIsLoaded(true); - }, [setCurrentObjectMetadataItem, objectMetadataItem]); + }, [setCurrentObjectMetadataItemId, objectMetadataItem]); return ( { setContextStoreCurrentViewId(contextStoreCurrentViewId); setContextStoreTargetedRecordsRule(contextStoreTargetedRecordsRule); - setContextStoreCurrentObjectMetadataItem(objectMetadataItem); + setContextStoreCurrentObjectMetadataItemId(objectMetadataItem.id); setContextStoreNumberOfSelectedRecords(contextStoreNumberOfSelectedRecords); setcontextStoreFiltersComponentState(contextStoreFilters); setIsLoaded(true); }, [ setContextStoreTargetedRecordsRule, - setContextStoreCurrentObjectMetadataItem, + setContextStoreCurrentObjectMetadataItemId, contextStoreTargetedRecordsRule, contextStoreCurrentObjectMetadataId, setContextStoreNumberOfSelectedRecords,