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
33 lines
1.1 KiB
TypeScript
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,
|
|
};
|
|
};
|