7336 create contextstore (#7374)

Closes #7336

Create 3 states:
- `contextStoreCurrentObjectMetadataIdState`: is set when we change
object metadata
- `contextStoreCurrentViewIdState`: is set when we change view
- `contextStoreTargetedRecordIdsState`: is set when we select records
inside a table or a board or when a show page is opened. Is reset when
we change view.
This commit is contained in:
Raphaël Bosi
2024-10-08 18:40:35 +02:00
committed by GitHub
parent 1863636003
commit a8da0e2bc8
10 changed files with 146 additions and 11 deletions

View File

@ -1,3 +1,4 @@
import { contextStoreCurrentViewIdState } from '@/context-store/states/contextStoreCurrentViewIdState';
import { useLastVisitedObjectMetadataItem } from '@/navigation/hooks/useLastVisitedObjectMetadataItem';
import { useLastVisitedView } from '@/navigation/hooks/useLastVisitedView';
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
@ -7,6 +8,7 @@ import { useGetCurrentView } from '@/views/hooks/useGetCurrentView';
import { currentViewIdComponentState } from '@/views/states/currentViewIdComponentState';
import { isUndefined } from '@sniptt/guards';
import { useEffect } from 'react';
import { useSetRecoilState } from 'recoil';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
import { isDefined } from '~/utils/isDefined';
@ -37,6 +39,9 @@ export const QueryParamsViewIdEffect = () => {
objectMetadataItemId?.id,
lastVisitedObjectMetadataItemId,
);
const setContextStoreCurrentViewId = useSetRecoilState(
contextStoreCurrentViewIdState,
);
// // TODO: scope view bar per view id if possible
// const { resetCurrentView } = useResetCurrentView();
@ -59,6 +64,7 @@ export const QueryParamsViewIdEffect = () => {
});
}
setCurrentViewId(lastVisitedViewId);
setContextStoreCurrentViewId(lastVisitedViewId);
return;
}
@ -73,6 +79,7 @@ export const QueryParamsViewIdEffect = () => {
});
}
setCurrentViewId(viewIdQueryParam);
setContextStoreCurrentViewId(viewIdQueryParam);
return;
}
@ -87,8 +94,13 @@ export const QueryParamsViewIdEffect = () => {
});
}
setCurrentViewId(indexView.id);
setContextStoreCurrentViewId(indexView.id);
return;
}
return () => {
setContextStoreCurrentViewId(null);
};
}, [
currentViewId,
getFiltersFromQueryParams,
@ -96,6 +108,7 @@ export const QueryParamsViewIdEffect = () => {
lastVisitedViewId,
objectMetadataItemId?.id,
objectNamePlural,
setContextStoreCurrentViewId,
setCurrentViewId,
setLastVisitedObjectMetadataItem,
setLastVisitedView,