Fix use object metadata item (#7297)
Fixes a bug which happened during workspace creation and remove duplicated code
This commit is contained in:
@ -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,
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user