Improve Jotai work (#18205)
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import { currentUserState } from '@/auth/states/currentUserState';
|
||||
import { lastVisitedObjectMetadataItemIdState } from '@/navigation/states/lastVisitedObjectMetadataItemIdState';
|
||||
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
|
||||
import { type ObjectPathInfo } from '@/navigation/types/ObjectPathInfo';
|
||||
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
|
||||
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
|
||||
@@ -12,8 +11,10 @@ import isEmpty from 'lodash.isempty';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { AppPath, SettingsPath } from 'twenty-shared/types';
|
||||
import { getAppPath, getSettingsPath, isDefined } from 'twenty-shared/utils';
|
||||
import { useStore } from 'jotai';
|
||||
|
||||
export const useDefaultHomePagePath = () => {
|
||||
const store = useStore();
|
||||
const currentUser = useRecoilValueV2(currentUserState);
|
||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||
|
||||
@@ -69,7 +70,7 @@ export const useDefaultHomePagePath = () => {
|
||||
}, [getFirstView, readableAlphaSortedActiveNonSystemObjectMetadataItems]);
|
||||
|
||||
const getDefaultObjectPathInfo = useCallback(() => {
|
||||
const lastVisitedObjectMetadataItemId = jotaiStore.get(
|
||||
const lastVisitedObjectMetadataItemId = store.get(
|
||||
lastVisitedObjectMetadataItemIdState.atom,
|
||||
);
|
||||
|
||||
@@ -91,6 +92,7 @@ export const useDefaultHomePagePath = () => {
|
||||
firstObjectPathInfo,
|
||||
getActiveObjectMetadataItemMatchingId,
|
||||
getFirstView,
|
||||
store,
|
||||
]);
|
||||
|
||||
const defaultHomePagePath = useMemo(() => {
|
||||
|
||||
+6
-5
@@ -1,19 +1,20 @@
|
||||
import { lastVisitedObjectMetadataItemIdState } from '@/navigation/states/lastVisitedObjectMetadataItemIdState';
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
|
||||
import { useCallback } from 'react';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { useStore } from 'jotai';
|
||||
|
||||
export const useSetLastVisitedObjectMetadataId = () => {
|
||||
const store = useStore();
|
||||
const setLastVisitedObjectMetadataId = useCallback(
|
||||
({ objectMetadataItemId }: { objectMetadataItemId: string }) => {
|
||||
const objectMetadataItems = jotaiStore.get(objectMetadataItemsState.atom);
|
||||
const objectMetadataItems = store.get(objectMetadataItemsState.atom);
|
||||
|
||||
const objectMetadataItem = objectMetadataItems.find(
|
||||
(item) => item.id === objectMetadataItemId,
|
||||
);
|
||||
|
||||
const lastVisitedObjectMetadataItemId = jotaiStore.get(
|
||||
const lastVisitedObjectMetadataItemId = store.get(
|
||||
lastVisitedObjectMetadataItemIdState.atom,
|
||||
);
|
||||
|
||||
@@ -21,13 +22,13 @@ export const useSetLastVisitedObjectMetadataId = () => {
|
||||
isDefined(objectMetadataItem) &&
|
||||
lastVisitedObjectMetadataItemId !== objectMetadataItemId
|
||||
) {
|
||||
jotaiStore.set(
|
||||
store.set(
|
||||
lastVisitedObjectMetadataItemIdState.atom,
|
||||
objectMetadataItemId,
|
||||
);
|
||||
}
|
||||
},
|
||||
[],
|
||||
[store],
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
+7
-6
@@ -1,12 +1,13 @@
|
||||
import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState';
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
|
||||
import { coreViewsState } from '@/views/states/coreViewState';
|
||||
import { type CoreViewWithRelations } from '@/views/types/CoreViewWithRelations';
|
||||
import { useCallback } from 'react';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { useStore } from 'jotai';
|
||||
|
||||
export const useSetLastVisitedViewForObjectMetadataNamePlural = () => {
|
||||
const store = useStore();
|
||||
const setLastVisitedViewForObjectMetadataNamePlural = useCallback(
|
||||
async ({
|
||||
objectNamePlural,
|
||||
@@ -15,13 +16,13 @@ export const useSetLastVisitedViewForObjectMetadataNamePlural = () => {
|
||||
objectNamePlural: string;
|
||||
viewId: string;
|
||||
}) => {
|
||||
const views = jotaiStore.get(coreViewsState.atom);
|
||||
const views = store.get(coreViewsState.atom);
|
||||
|
||||
const view = views.find(
|
||||
(view: CoreViewWithRelations) => view.id === viewId,
|
||||
);
|
||||
|
||||
const objectMetadataItems = jotaiStore.get(objectMetadataItemsState.atom);
|
||||
const objectMetadataItems = store.get(objectMetadataItemsState.atom);
|
||||
|
||||
const objectMetadataItem = objectMetadataItems.find(
|
||||
(item) => item.namePlural === objectNamePlural,
|
||||
@@ -35,7 +36,7 @@ export const useSetLastVisitedViewForObjectMetadataNamePlural = () => {
|
||||
return;
|
||||
}
|
||||
|
||||
const lastVisitedViewPerObjectMetadataItem = jotaiStore.get(
|
||||
const lastVisitedViewPerObjectMetadataItem = store.get(
|
||||
lastVisitedViewPerObjectMetadataItemState.atom,
|
||||
);
|
||||
|
||||
@@ -43,13 +44,13 @@ export const useSetLastVisitedViewForObjectMetadataNamePlural = () => {
|
||||
lastVisitedViewPerObjectMetadataItem?.[objectMetadataItem?.id];
|
||||
|
||||
if (isDefined(objectMetadataItem) && lastVisitedViewId !== viewId) {
|
||||
jotaiStore.set(lastVisitedViewPerObjectMetadataItemState.atom, {
|
||||
store.set(lastVisitedViewPerObjectMetadataItemState.atom, {
|
||||
...lastVisitedViewPerObjectMetadataItem,
|
||||
[objectMetadataItem.id]: viewId,
|
||||
});
|
||||
}
|
||||
},
|
||||
[],
|
||||
[store],
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user