Fix use object metadata item (#7297)

Fixes a bug which happened during workspace creation and remove
duplicated code
This commit is contained in:
Raphaël Bosi
2024-09-27 16:42:35 +02:00
committed by GitHub
parent 9d36493cf0
commit 9f477129e2
3 changed files with 7 additions and 28 deletions

View File

@ -16,7 +16,7 @@ export const ObjectMetadataItemsLoadEffect = () => {
const currentWorkspace = useRecoilValue(currentWorkspaceState); const currentWorkspace = useRecoilValue(currentWorkspaceState);
const isLoggedIn = useIsLogged(); const isLoggedIn = useIsLogged();
const { objectMetadataItems: newObjectMetadataItems, loading } = const { objectMetadataItems: newObjectMetadataItems } =
useFindManyObjectMetadataItems({ useFindManyObjectMetadataItems({
skip: !isLoggedIn, skip: !isLoggedIn,
}); });
@ -31,16 +31,12 @@ export const ObjectMetadataItemsLoadEffect = () => {
currentWorkspace?.activationStatus !== WorkspaceActivationStatus.Active currentWorkspace?.activationStatus !== WorkspaceActivationStatus.Active
? generatedMockObjectMetadataItems ? generatedMockObjectMetadataItems
: newObjectMetadataItems; : newObjectMetadataItems;
if ( if (!isDeeplyEqual(objectMetadataItems, toSetObjectMetadataItems)) {
!loading &&
!isDeeplyEqual(objectMetadataItems, toSetObjectMetadataItems)
) {
setObjectMetadataItems(toSetObjectMetadataItems); setObjectMetadataItems(toSetObjectMetadataItems);
} }
}, [ }, [
currentUser, currentUser,
currentWorkspace?.activationStatus, currentWorkspace?.activationStatus,
loading,
newObjectMetadataItems, newObjectMetadataItems,
objectMetadataItems, objectMetadataItems,
setObjectMetadataItems, setObjectMetadataItems,

View File

@ -1,37 +1,23 @@
import { useRecoilValue } from 'recoil'; import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/ObjectMetadataNotFoundError'; import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/ObjectMetadataNotFoundError';
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector'; import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { isDefined } from '~/utils/isDefined'; import { isDefined } from '~/utils/isDefined';
import { WorkspaceActivationStatus } from '~/generated/graphql';
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/objectMetadataItems';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier'; import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
export const useObjectMetadataItem = ({ export const useObjectMetadataItem = ({
objectNameSingular, objectNameSingular,
}: ObjectMetadataItemIdentifier) => { }: ObjectMetadataItemIdentifier) => {
const currentWorkspace = useRecoilValue(currentWorkspaceState); const objectMetadataItem = useRecoilValue(
let objectMetadataItem = useRecoilValue(
objectMetadataItemFamilySelector({ objectMetadataItemFamilySelector({
objectName: objectNameSingular, objectName: objectNameSingular,
objectNameType: 'singular', objectNameType: 'singular',
}), }),
); );
let objectMetadataItems = useRecoilValue(objectMetadataItemsState); const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
if (currentWorkspace?.activationStatus !== WorkspaceActivationStatus.Active) {
objectMetadataItem =
generatedMockObjectMetadataItems.find(
(objectMetadataItem) =>
objectMetadataItem.nameSingular === objectNameSingular,
) ?? null;
objectMetadataItems = generatedMockObjectMetadataItems;
}
if (!isDefined(objectMetadataItem)) { if (!isDefined(objectMetadataItem)) {
throw new ObjectMetadataItemNotFoundError( throw new ObjectMetadataItemNotFoundError(

View File

@ -12,7 +12,6 @@ import {
import { RecoilRoot } from 'recoil'; import { RecoilRoot } from 'recoil';
import { ClientConfigProviderEffect } from '@/client-config/components/ClientConfigProviderEffect'; import { ClientConfigProviderEffect } from '@/client-config/components/ClientConfigProviderEffect';
import { ObjectMetadataItemsProvider } from '@/object-metadata/components/ObjectMetadataItemsProvider';
import { ApolloMetadataClientMockedProvider } from '@/object-metadata/hooks/__mocks__/ApolloMetadataClientProvider'; import { ApolloMetadataClientMockedProvider } from '@/object-metadata/hooks/__mocks__/ApolloMetadataClientProvider';
import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope'; import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope';
import { UserProviderEffect } from '@/users/components/UserProviderEffect'; import { UserProviderEffect } from '@/users/components/UserProviderEffect';
@ -77,11 +76,9 @@ const Providers = () => {
<HelmetProvider> <HelmetProvider>
<SnackBarProviderScope snackBarManagerScopeId="snack-bar-manager"> <SnackBarProviderScope snackBarManagerScopeId="snack-bar-manager">
<IconsProvider> <IconsProvider>
<ObjectMetadataItemsProvider> <PrefetchDataProvider>
<PrefetchDataProvider> <Outlet />
<Outlet /> </PrefetchDataProvider>
</PrefetchDataProvider>
</ObjectMetadataItemsProvider>
</IconsProvider> </IconsProvider>
</SnackBarProviderScope> </SnackBarProviderScope>
</HelmetProvider> </HelmetProvider>