Files
twenty/packages/twenty-front/src/modules/navigation/hooks/useLastVisitedView.ts
Charles Bochet 5b4cb4bd2c 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
2025-02-17 17:27:28 +01:00

33 lines
1.1 KiB
TypeScript

import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState';
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
import { useRecoilValue } from 'recoil';
export const useLastVisitedView = () => {
const lastVisitedViewPerObjectMetadataItem = useRecoilValue(
lastVisitedViewPerObjectMetadataItemState,
);
const { findActiveObjectMetadataItemByNamePlural } =
useFilteredObjectMetadataItems();
const getLastVisitedViewIdFromObjectNamePlural = (
objectNamePlural: string,
) => {
const objectMetadataItemId: string | undefined =
findActiveObjectMetadataItemByNamePlural(objectNamePlural)?.id;
return objectMetadataItemId
? lastVisitedViewPerObjectMetadataItem?.[objectMetadataItemId]
: undefined;
};
const getLastVisitedViewIdFromObjectMetadataItemId = (
objectMetadataItemId: string,
) => {
return lastVisitedViewPerObjectMetadataItem?.[objectMetadataItemId];
};
return {
getLastVisitedViewIdFromObjectNamePlural,
getLastVisitedViewIdFromObjectMetadataItemId,
};
};