Remove old view implementation step 1 (#14189)
Let's move forward and get rid of the past... ! Removing prefetchViewState and the prefetch view query. Next steps: - renaming Selectors to remove prefetch keywork - remove old view type and coreViewToView util - rework optimistic rendering for coreViews
This commit is contained in:
+8
-17
@@ -7,11 +7,9 @@ import { currentUserWorkspaceState } from '@/auth/states/currentUserWorkspaceSta
|
||||
import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePath';
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations';
|
||||
import { arePrefetchViewsLoadedState } from '@/prefetch/states/arePrefetchViewsLoaded';
|
||||
import { prefetchViewsState } from '@/prefetch/states/prefetchViewsState';
|
||||
import { AppPath } from '@/types/AppPath';
|
||||
import { ViewOpenRecordInType } from '@/views/types/ViewOpenRecordInType';
|
||||
import { ViewType } from '@/views/types/ViewType';
|
||||
import { coreViewsState } from '@/views/states/coreViewState';
|
||||
import { ViewOpenRecordIn, ViewType } from '~/generated/graphql';
|
||||
import { getMockCompanyObjectMetadataItem } from '~/testing/mock-data/companies';
|
||||
import { mockedUserData } from '~/testing/mock-data/users';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems';
|
||||
@@ -32,39 +30,33 @@ const renderHooks = ({
|
||||
const setObjectMetadataItems = useSetRecoilState(
|
||||
objectMetadataItemsState,
|
||||
);
|
||||
const setPrefetchViews = useSetRecoilState(prefetchViewsState);
|
||||
const setArePrefetchViewsLoaded = useSetRecoilState(
|
||||
arePrefetchViewsLoadedState,
|
||||
);
|
||||
const setCoreViews = useSetRecoilState(coreViewsState);
|
||||
|
||||
useEffect(() => {
|
||||
setObjectMetadataItems(generatedMockObjectMetadataItems);
|
||||
setArePrefetchViewsLoaded(true);
|
||||
|
||||
if (withExistingView) {
|
||||
setPrefetchViews([
|
||||
setCoreViews([
|
||||
{
|
||||
id: 'viewId',
|
||||
name: 'Test View',
|
||||
objectMetadataId: getMockCompanyObjectMetadataItem().id,
|
||||
type: ViewType.Table,
|
||||
type: ViewType.TABLE,
|
||||
key: null,
|
||||
isCompact: false,
|
||||
openRecordIn: ViewOpenRecordInType.SIDE_PANEL,
|
||||
openRecordIn: ViewOpenRecordIn.SIDE_PANEL,
|
||||
viewFields: [],
|
||||
viewGroups: [],
|
||||
viewSorts: [],
|
||||
kanbanFieldMetadataId: '',
|
||||
kanbanAggregateOperation: AggregateOperations.COUNT,
|
||||
icon: '',
|
||||
kanbanAggregateOperationFieldMetadataId: '',
|
||||
position: 0,
|
||||
viewFilters: [],
|
||||
__typename: 'View',
|
||||
},
|
||||
]);
|
||||
} else {
|
||||
setPrefetchViews([]);
|
||||
setCoreViews([]);
|
||||
}
|
||||
|
||||
if (withCurrentUser) {
|
||||
@@ -75,8 +67,7 @@ const renderHooks = ({
|
||||
setCurrentUser,
|
||||
setCurrentUserWorkspace,
|
||||
setObjectMetadataItems,
|
||||
setPrefetchViews,
|
||||
setArePrefetchViewsLoaded,
|
||||
setCoreViews,
|
||||
]);
|
||||
|
||||
return useDefaultHomePagePath();
|
||||
|
||||
@@ -3,37 +3,26 @@ import { lastVisitedObjectMetadataItemIdState } from '@/navigation/states/lastVi
|
||||
import { type ObjectPathInfo } from '@/navigation/types/ObjectPathInfo';
|
||||
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
|
||||
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
|
||||
import { arePrefetchViewsLoadedState } from '@/prefetch/states/arePrefetchViewsLoaded';
|
||||
import { prefetchViewsState } from '@/prefetch/states/prefetchViewsState';
|
||||
import { getObjectPermissionsFromMapByObjectMetadataId } from '@/settings/roles/role-permissions/objects-permissions/utils/getObjectPermissionsFromMapByObjectMetadataId';
|
||||
import { AppPath } from '@/types/AppPath';
|
||||
import { SettingsPath } from '@/types/SettingsPath';
|
||||
import { coreViewsState } from '@/views/states/coreViewState';
|
||||
import { convertCoreViewToView } from '@/views/utils/convertCoreViewToView';
|
||||
import { useFeatureFlagsMap } from '@/workspace/hooks/useFeatureFlagsMap';
|
||||
import isEmpty from 'lodash.isempty';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { useRecoilCallback, useRecoilValue } from 'recoil';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { FeatureFlagKey } from '~/generated/graphql';
|
||||
import { getAppPath } from '~/utils/navigation/getAppPath';
|
||||
|
||||
export const useDefaultHomePagePath = () => {
|
||||
const currentUser = useRecoilValue(currentUserState);
|
||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||
|
||||
const featureFlagsMap = useFeatureFlagsMap();
|
||||
|
||||
const isCoreViewEnabled =
|
||||
featureFlagsMap[FeatureFlagKey.IS_CORE_VIEW_ENABLED];
|
||||
|
||||
const {
|
||||
activeNonSystemObjectMetadataItems,
|
||||
alphaSortedActiveNonSystemObjectMetadataItems,
|
||||
} = useFilteredObjectMetadataItems();
|
||||
|
||||
const arePrefetchViewsLoaded = useRecoilValue(arePrefetchViewsLoadedState);
|
||||
|
||||
const readableAlphaSortedActiveNonSystemObjectMetadataItems = useMemo(() => {
|
||||
return alphaSortedActiveNonSystemObjectMetadataItems.filter((item) => {
|
||||
const objectPermissions = getObjectPermissionsFromMapByObjectMetadataId({
|
||||
@@ -56,27 +45,18 @@ export const useDefaultHomePagePath = () => {
|
||||
[activeNonSystemObjectMetadataItems],
|
||||
);
|
||||
|
||||
const getFirstView = useRecoilCallback(
|
||||
({ snapshot }) => {
|
||||
return (objectMetadataItemId: string | undefined | null) => {
|
||||
if (!arePrefetchViewsLoaded) {
|
||||
return undefined;
|
||||
}
|
||||
const getFirstView = useRecoilCallback(({ snapshot }) => {
|
||||
return (objectMetadataItemId: string | undefined | null) => {
|
||||
const views = snapshot
|
||||
.getLoadable(coreViewsState)
|
||||
.getValue()
|
||||
.map(convertCoreViewToView);
|
||||
|
||||
const views = isCoreViewEnabled
|
||||
? snapshot
|
||||
.getLoadable(coreViewsState)
|
||||
.getValue()
|
||||
.map(convertCoreViewToView)
|
||||
: snapshot.getLoadable(prefetchViewsState).getValue();
|
||||
|
||||
return views.find(
|
||||
(view) => view.objectMetadataId === objectMetadataItemId,
|
||||
);
|
||||
};
|
||||
},
|
||||
[arePrefetchViewsLoaded, isCoreViewEnabled],
|
||||
);
|
||||
return views.find(
|
||||
(view) => view.objectMetadataId === objectMetadataItemId,
|
||||
);
|
||||
};
|
||||
}, []);
|
||||
|
||||
const firstObjectPathInfo = useMemo<ObjectPathInfo | null>(() => {
|
||||
const [firstObjectMetadataItem] =
|
||||
@@ -132,10 +112,6 @@ export const useDefaultHomePagePath = () => {
|
||||
);
|
||||
|
||||
const defaultHomePagePath = useMemo(() => {
|
||||
if (!arePrefetchViewsLoaded) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if (!isDefined(currentUser)) {
|
||||
return AppPath.SignInUp;
|
||||
}
|
||||
@@ -159,7 +135,6 @@ export const useDefaultHomePagePath = () => {
|
||||
viewId ? { viewId } : undefined,
|
||||
);
|
||||
}, [
|
||||
arePrefetchViewsLoaded,
|
||||
currentUser,
|
||||
getDefaultObjectPathInfo,
|
||||
readableAlphaSortedActiveNonSystemObjectMetadataItems,
|
||||
|
||||
+6
-4
@@ -1,7 +1,7 @@
|
||||
import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState';
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { prefetchViewsState } from '@/prefetch/states/prefetchViewsState';
|
||||
import { type View } from '@/views/types/View';
|
||||
import { coreViewsState } from '@/views/states/coreViewState';
|
||||
import { type CoreViewWithRelations } from '@/views/types/CoreViewWithRelations';
|
||||
import { useRecoilCallback } from 'recoil';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
@@ -15,9 +15,11 @@ export const useSetLastVisitedViewForObjectMetadataNamePlural = () => {
|
||||
objectNamePlural: string;
|
||||
viewId: string;
|
||||
}) => {
|
||||
const views = snapshot.getLoadable(prefetchViewsState).getValue();
|
||||
const views = snapshot.getLoadable(coreViewsState).getValue();
|
||||
|
||||
const view = views.find((view: View) => view.id === viewId);
|
||||
const view = views.find(
|
||||
(view: CoreViewWithRelations) => view.id === viewId,
|
||||
);
|
||||
|
||||
const objectMetadataItems = snapshot
|
||||
.getLoadable(objectMetadataItemsState)
|
||||
|
||||
Reference in New Issue
Block a user