Files
twenty/packages/twenty-front/src/modules/views/components/QueryParamsViewIdEffect.tsx
Charles Bochet 4a493b6ecf New view picker (#4610)
* Implement new view picker

* Complete feature

* Fixes according to review
2024-03-22 15:04:17 +01:00

39 lines
1.2 KiB
TypeScript

import { useEffect } from 'react';
import { isUndefined } from '@sniptt/guards';
import { useRecoilState } from 'recoil';
import { useViewFromQueryParams } from '@/views/hooks/internal/useViewFromQueryParams';
import { useViewStates } from '@/views/hooks/internal/useViewStates';
import { useGetCurrentView } from '@/views/hooks/useGetCurrentView';
import { isDefined } from '~/utils/isDefined';
export const QueryParamsViewIdEffect = () => {
const { getFiltersFromQueryParams, viewIdQueryParam } =
useViewFromQueryParams();
const { currentViewIdState } = useViewStates();
const [currentViewId, setCurrentViewId] = useRecoilState(currentViewIdState);
const { viewsOnCurrentObject } = useGetCurrentView();
useEffect(() => {
const indexView = viewsOnCurrentObject.find((view) => view.key === 'INDEX');
if (isUndefined(viewIdQueryParam) && isDefined(indexView)) {
setCurrentViewId(indexView.id);
return;
}
if (isDefined(viewIdQueryParam)) {
setCurrentViewId(viewIdQueryParam);
}
}, [
currentViewId,
getFiltersFromQueryParams,
setCurrentViewId,
viewIdQueryParam,
viewsOnCurrentObject,
]);
return <></>;
};