2023-12-01 22:45:42 +00:00
|
|
|
import { useEffect } from 'react';
|
2024-10-03 15:18:49 +00:00
|
|
|
import { useRecoilCallback, useRecoilValue } from 'recoil';
|
2023-12-01 22:45:42 +00:00
|
|
|
|
2024-08-28 15:15:54 +00:00
|
|
|
import { useIsLogged } from '@/auth/hooks/useIsLogged';
|
2024-03-26 13:19:40 +00:00
|
|
|
import { currentUserState } from '@/auth/states/currentUserState';
|
2024-04-30 16:48:07 +00:00
|
|
|
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
2023-12-01 21:06:38 +00:00
|
|
|
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
2023-12-01 22:45:42 +00:00
|
|
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
2024-07-30 10:36:39 +00:00
|
|
|
import { WorkspaceActivationStatus } from '~/generated/graphql';
|
2024-10-04 22:22:38 +00:00
|
|
|
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
2023-12-01 22:45:42 +00:00
|
|
|
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
2024-03-26 13:19:40 +00:00
|
|
|
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
|
2023-12-01 21:06:38 +00:00
|
|
|
|
|
|
|
|
export const ObjectMetadataItemsLoadEffect = () => {
|
2024-03-26 13:19:40 +00:00
|
|
|
const currentUser = useRecoilValue(currentUserState);
|
2024-04-30 16:48:07 +00:00
|
|
|
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
2024-08-28 15:15:54 +00:00
|
|
|
const isLoggedIn = useIsLogged();
|
2024-04-30 16:48:07 +00:00
|
|
|
|
2024-12-06 17:46:06 +00:00
|
|
|
const {
|
|
|
|
|
objectMetadataItems: newObjectMetadataItems,
|
|
|
|
|
loading: isObjectMetadataLoading,
|
|
|
|
|
} = useFindManyObjectMetadataItems({
|
|
|
|
|
skip: !isLoggedIn,
|
|
|
|
|
});
|
2023-12-01 22:45:42 +00:00
|
|
|
|
2024-10-03 15:18:49 +00:00
|
|
|
const updateObjectMetadataItems = useRecoilCallback(
|
|
|
|
|
({ set, snapshot }) =>
|
|
|
|
|
() => {
|
|
|
|
|
const toSetObjectMetadataItems =
|
|
|
|
|
isUndefinedOrNull(currentUser) ||
|
|
|
|
|
currentWorkspace?.activationStatus !==
|
|
|
|
|
WorkspaceActivationStatus.Active
|
|
|
|
|
? generatedMockObjectMetadataItems
|
2024-10-13 08:21:03 +00:00
|
|
|
: newObjectMetadataItems;
|
2024-10-03 15:18:49 +00:00
|
|
|
|
|
|
|
|
if (
|
2024-12-06 17:46:06 +00:00
|
|
|
!isObjectMetadataLoading &&
|
2024-10-03 15:18:49 +00:00
|
|
|
!isDeeplyEqual(
|
|
|
|
|
snapshot.getLoadable(objectMetadataItemsState).getValue(),
|
|
|
|
|
toSetObjectMetadataItems,
|
|
|
|
|
)
|
|
|
|
|
) {
|
|
|
|
|
set(objectMetadataItemsState, toSetObjectMetadataItems);
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-12-06 17:46:06 +00:00
|
|
|
[
|
|
|
|
|
currentUser,
|
|
|
|
|
currentWorkspace?.activationStatus,
|
|
|
|
|
isObjectMetadataLoading,
|
|
|
|
|
newObjectMetadataItems,
|
|
|
|
|
],
|
2023-12-01 22:45:42 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
2024-10-03 15:18:49 +00:00
|
|
|
updateObjectMetadataItems();
|
|
|
|
|
}, [updateObjectMetadataItems]);
|
2023-12-01 21:06:38 +00:00
|
|
|
|
|
|
|
|
return <></>;
|
|
|
|
|
};
|