2026-02-23 18:57:02 +00:00
|
|
|
import { useMetadataStore } from '@/metadata-store/hooks/useMetadataStore';
|
|
|
|
|
import { isCurrentUserLoadedState } from '@/auth/states/isCurrentUserLoadedState';
|
2024-04-30 16:48:07 +00:00
|
|
|
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
2024-12-11 14:42:53 +00:00
|
|
|
import { useLoadMockedObjectMetadataItems } from '@/object-metadata/hooks/useLoadMockedObjectMetadataItems';
|
2025-08-07 16:21:59 +00:00
|
|
|
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItems';
|
2026-02-23 18:57:02 +00:00
|
|
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
|
|
|
|
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
|
|
|
|
|
import { useStore } from 'jotai';
|
|
|
|
|
import { useEffect, useState } from 'react';
|
2025-03-22 18:16:06 +00:00
|
|
|
import { isWorkspaceActiveOrSuspended } from 'twenty-shared/workspace';
|
2023-12-01 21:06:38 +00:00
|
|
|
|
2026-02-23 18:57:02 +00:00
|
|
|
export const ObjectMetadataProviderInitialEffect = () => {
|
|
|
|
|
const isCurrentUserLoaded = useRecoilValueV2(isCurrentUserLoadedState);
|
2026-02-23 11:01:37 +00:00
|
|
|
const currentWorkspace = useRecoilValueV2(currentWorkspaceState);
|
2026-02-23 18:57:02 +00:00
|
|
|
const store = useStore();
|
2025-09-09 09:35:04 +00:00
|
|
|
const [isInitialized, setIsInitialized] = useState(false);
|
2024-04-30 16:48:07 +00:00
|
|
|
|
2024-12-11 14:42:53 +00:00
|
|
|
const { refreshObjectMetadataItems } = useRefreshObjectMetadataItems();
|
|
|
|
|
const { loadMockedObjectMetadataItems } = useLoadMockedObjectMetadataItems();
|
2026-02-23 18:57:02 +00:00
|
|
|
const { updateDraft, applyChanges } = useMetadataStore();
|
2023-12-01 22:45:42 +00:00
|
|
|
|
|
|
|
|
useEffect(() => {
|
2026-02-24 19:38:30 +00:00
|
|
|
if (isInitialized) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (!isCurrentUserLoaded) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2026-02-23 18:57:02 +00:00
|
|
|
|
|
|
|
|
const shouldLoadReal = isWorkspaceActiveOrSuspended(currentWorkspace);
|
2025-06-04 09:01:30 +00:00
|
|
|
|
|
|
|
|
const loadObjectMetadata = async () => {
|
2026-02-23 18:57:02 +00:00
|
|
|
if (shouldLoadReal) {
|
2025-06-04 09:01:30 +00:00
|
|
|
await refreshObjectMetadataItems();
|
2026-02-23 18:57:02 +00:00
|
|
|
} else {
|
|
|
|
|
await loadMockedObjectMetadataItems();
|
2025-06-04 09:01:30 +00:00
|
|
|
}
|
2026-02-23 18:57:02 +00:00
|
|
|
|
|
|
|
|
const loadedItems = store.get(objectMetadataItemsState.atom);
|
|
|
|
|
updateDraft('objects', loadedItems);
|
|
|
|
|
applyChanges();
|
2025-09-09 09:35:04 +00:00
|
|
|
setIsInitialized(true);
|
2025-06-04 09:01:30 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
loadObjectMetadata();
|
2024-12-11 14:42:53 +00:00
|
|
|
}, [
|
2026-02-23 18:57:02 +00:00
|
|
|
isInitialized,
|
|
|
|
|
isCurrentUserLoaded,
|
2025-01-16 14:01:04 +00:00
|
|
|
currentWorkspace,
|
2024-12-11 14:42:53 +00:00
|
|
|
refreshObjectMetadataItems,
|
2026-02-23 18:57:02 +00:00
|
|
|
loadMockedObjectMetadataItems,
|
|
|
|
|
store,
|
|
|
|
|
updateDraft,
|
|
|
|
|
applyChanges,
|
2024-12-11 14:42:53 +00:00
|
|
|
]);
|
2023-12-01 21:06:38 +00:00
|
|
|
|
2026-02-23 18:57:02 +00:00
|
|
|
return null;
|
2023-12-01 21:06:38 +00:00
|
|
|
};
|