diff --git a/packages/twenty-front/src/modules/page-layout/components/PageLayoutInitializationQueryEffect.tsx b/packages/twenty-front/src/modules/page-layout/components/PageLayoutInitializationQueryEffect.tsx index 7fcabedac1..7c07f2302c 100644 --- a/packages/twenty-front/src/modules/page-layout/components/PageLayoutInitializationQueryEffect.tsx +++ b/packages/twenty-front/src/modules/page-layout/components/PageLayoutInitializationQueryEffect.tsx @@ -20,14 +20,16 @@ import { DEFAULT_WORKFLOW_VERSION_PAGE_LAYOUT_ID } from '@/page-layout/constants import { usePageLayoutWithRelationWidgets } from '@/page-layout/hooks/usePageLayoutWithRelationWidgets'; import { pageLayoutCurrentLayoutsComponentState } from '@/page-layout/states/pageLayoutCurrentLayoutsComponentState'; import { pageLayoutDraftComponentState } from '@/page-layout/states/pageLayoutDraftComponentState'; +import { pageLayoutIsInitializedComponentState } from '@/page-layout/states/pageLayoutIsInitializedComponentState'; import { pageLayoutPersistedComponentState } from '@/page-layout/states/pageLayoutPersistedComponentState'; import { type PageLayout } from '@/page-layout/types/PageLayout'; import { convertPageLayoutToTabLayouts } from '@/page-layout/utils/convertPageLayoutToTabLayouts'; import { transformPageLayout } from '@/page-layout/utils/transformPageLayout'; import { useRecoilComponentCallbackState } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentCallbackState'; +import { useRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentState'; import { getSnapshotValue } from '@/ui/utilities/state/utils/getSnapshotValue'; import { useQuery } from '@apollo/client'; -import { useEffect, useState } from 'react'; +import { useEffect } from 'react'; import { useRecoilCallback } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; @@ -65,7 +67,9 @@ export const PageLayoutInitializationQueryEffect = ({ pageLayoutId, onInitialized, }: PageLayoutInitializationQueryEffectProps) => { - const [isInitialized, setIsInitialized] = useState(false); + const [isInitialized, setIsInitialized] = useRecoilComponentState( + pageLayoutIsInitializedComponentState, + ); const isDefaultLayout = pageLayoutId === DEFAULT_RECORD_PAGE_LAYOUT_ID || @@ -138,7 +142,13 @@ export const PageLayoutInitializationQueryEffect = ({ onInitialized?.(pageLayout); setIsInitialized(true); } - }, [initializePageLayout, isInitialized, pageLayout, onInitialized]); + }, [ + initializePageLayout, + isInitialized, + pageLayout, + onInitialized, + setIsInitialized, + ]); return null; }; diff --git a/packages/twenty-front/src/modules/page-layout/states/pageLayoutIsInitializedComponentState.ts b/packages/twenty-front/src/modules/page-layout/states/pageLayoutIsInitializedComponentState.ts new file mode 100644 index 0000000000..61db2da1fd --- /dev/null +++ b/packages/twenty-front/src/modules/page-layout/states/pageLayoutIsInitializedComponentState.ts @@ -0,0 +1,10 @@ +import { createComponentState } from '@/ui/utilities/state/component-state/utils/createComponentState'; + +import { PageLayoutComponentInstanceContext } from './contexts/PageLayoutComponentInstanceContext'; + +export const pageLayoutIsInitializedComponentState = + createComponentState({ + key: 'pageLayoutIsInitializedComponentState', + defaultValue: false, + componentInstanceContext: PageLayoutComponentInstanceContext, + });