Files
twenty/front/src/modules/metadata/components/ObjectTableEffect.tsx
T
2023-10-31 12:38:53 +01:00

59 lines
1.6 KiB
TypeScript

import { useEffect } from 'react';
import { useSetRecoilState } from 'recoil';
import { availableTableColumnsScopedState } from '@/ui/object/record-table/states/availableTableColumnsScopedState';
import { useView } from '@/views/hooks/useView';
import { ViewType } from '@/views/types/ViewType';
import { useObjectMetadataItemInContext } from '../hooks/useObjectMetadataItemInContext';
export const ObjectTableEffect = () => {
const {
setAvailableSortDefinitions,
setAvailableFilterDefinitions,
setAvailableFieldDefinitions,
setViewType,
setViewObjectId,
} = useView();
const {
columnDefinitions,
filterDefinitions,
sortDefinitions,
foundObjectMetadataItem,
} = useObjectMetadataItemInContext();
const tableScopeId = foundObjectMetadataItem?.namePlural ?? '';
const setAvailableTableColumns = useSetRecoilState(
availableTableColumnsScopedState(tableScopeId),
);
useEffect(() => {
if (!foundObjectMetadataItem) {
return;
}
setViewObjectId?.(foundObjectMetadataItem.id);
setViewType?.(ViewType.Table);
setAvailableSortDefinitions?.(sortDefinitions);
setAvailableFilterDefinitions?.(filterDefinitions);
setAvailableFieldDefinitions?.(columnDefinitions);
setAvailableTableColumns(columnDefinitions);
}, [
setAvailableTableColumns,
setViewObjectId,
setViewType,
columnDefinitions,
setAvailableSortDefinitions,
setAvailableFilterDefinitions,
setAvailableFieldDefinitions,
foundObjectMetadataItem,
sortDefinitions,
filterDefinitions,
]);
return <></>;
};