Simplify last visited (#10259)
In this PR, I'm simplifying the lastVisitedView / Object logic: - removing fallback logic as it's not useful - splitting hooks into smaller hooks (to avoir re-renders) - removing componentState on those states that are global
This commit is contained in:
+35
@@ -0,0 +1,35 @@
|
||||
import { lastVisitedObjectMetadataItemIdState } from '@/navigation/states/lastVisitedObjectMetadataItemIdState';
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { useRecoilCallback } from 'recoil';
|
||||
import { isDefined } from 'twenty-shared';
|
||||
|
||||
export const useSetLastVisitedObjectMetadataId = () => {
|
||||
const setLastVisitedObjectMetadataId = useRecoilCallback(
|
||||
({ set, snapshot }) =>
|
||||
({ objectMetadataItemId }: { objectMetadataItemId: string }) => {
|
||||
const objectMetadataItems = snapshot
|
||||
.getLoadable(objectMetadataItemsState)
|
||||
.getValue();
|
||||
|
||||
const objectMetadataItem = objectMetadataItems.find(
|
||||
(item) => item.id === objectMetadataItemId,
|
||||
);
|
||||
|
||||
const lastVisitedObjectMetadataItemId = snapshot
|
||||
.getLoadable(lastVisitedObjectMetadataItemIdState)
|
||||
.getValue();
|
||||
|
||||
if (
|
||||
isDefined(objectMetadataItem) &&
|
||||
lastVisitedObjectMetadataItemId !== objectMetadataItemId
|
||||
) {
|
||||
set(lastVisitedObjectMetadataItemIdState, objectMetadataItemId);
|
||||
}
|
||||
},
|
||||
[],
|
||||
);
|
||||
|
||||
return {
|
||||
setLastVisitedObjectMetadataId,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user