6cc947ea01
This PR removes useRecordTable barrel-hook and instead use the pattern that enforces one hook per function. This allows to have a easier to maintain React code with small dedicated hooks. This PR also improves the usage of those hooks by cleaning some logic that calls them. We introduce a new hook : `useRecordIndexIdFromCurrentContextStore` that factorizes logic that was duplicated to retrieve the `recordTableId`. Introduced `useHandleColumnsChange`, that saves table columns into view, this could be discussed but is it isolated with a TODO comment so ok for now. Also lowered the coverage because not enough to cover with test here. --------- Co-authored-by: Charles Bochet <charles@twenty.com>
82 lines
3.0 KiB
TypeScript
82 lines
3.0 KiB
TypeScript
import { useEffect } from 'react';
|
|
|
|
import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId';
|
|
import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState';
|
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
|
import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObjectNameSingularFromPlural';
|
|
import { useSetAvailableTableColumns } from '@/object-record/record-table/hooks/useSetAvailableTableColumns';
|
|
import { useSetTableColumns } from '@/object-record/record-table/hooks/useSetTableColumns';
|
|
import { SIGN_IN_BACKGROUND_MOCK_COLUMN_DEFINITIONS } from '@/sign-in-background-mock/constants/SignInBackgroundMockColumnDefinitions';
|
|
import { SIGN_IN_BACKGROUND_MOCK_VIEW_FIELDS } from '@/sign-in-background-mock/constants/SignInBackgroundMockViewFields';
|
|
import { useRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentState';
|
|
import { useInitViewBar } from '@/views/hooks/useInitViewBar';
|
|
import { mapViewFieldsToColumnDefinitions } from '@/views/utils/mapViewFieldsToColumnDefinitions';
|
|
|
|
type SignInBackgroundMockContainerEffectProps = {
|
|
objectNamePlural: string;
|
|
recordTableId: string;
|
|
viewId: string;
|
|
};
|
|
|
|
export const SignInBackgroundMockContainerEffect = ({
|
|
objectNamePlural,
|
|
recordTableId,
|
|
viewId,
|
|
}: SignInBackgroundMockContainerEffectProps) => {
|
|
const [
|
|
contextStoreCurrentObjectMetadataItemId,
|
|
setContextStoreCurrentObjectMetadataItemId,
|
|
] = useRecoilComponentState(
|
|
contextStoreCurrentObjectMetadataItemIdComponentState,
|
|
MAIN_CONTEXT_STORE_INSTANCE_ID,
|
|
);
|
|
|
|
const { setAvailableTableColumns } =
|
|
useSetAvailableTableColumns(recordTableId);
|
|
|
|
const { setTableColumns } = useSetTableColumns();
|
|
|
|
const { objectNameSingular } = useObjectNameSingularFromPlural({
|
|
objectNamePlural,
|
|
});
|
|
|
|
const { objectMetadataItem } = useObjectMetadataItem({
|
|
objectNameSingular,
|
|
});
|
|
|
|
const { setAvailableFieldDefinitions, setViewObjectMetadataId } =
|
|
useInitViewBar(viewId);
|
|
|
|
useEffect(() => {
|
|
setViewObjectMetadataId?.(objectMetadataItem.id);
|
|
|
|
setAvailableFieldDefinitions?.(SIGN_IN_BACKGROUND_MOCK_COLUMN_DEFINITIONS);
|
|
|
|
setAvailableTableColumns(SIGN_IN_BACKGROUND_MOCK_COLUMN_DEFINITIONS);
|
|
|
|
setTableColumns(
|
|
mapViewFieldsToColumnDefinitions({
|
|
viewFields: SIGN_IN_BACKGROUND_MOCK_VIEW_FIELDS,
|
|
columnDefinitions: SIGN_IN_BACKGROUND_MOCK_COLUMN_DEFINITIONS,
|
|
}),
|
|
recordTableId,
|
|
objectMetadataItem.id,
|
|
);
|
|
|
|
if (contextStoreCurrentObjectMetadataItemId !== objectMetadataItem.id) {
|
|
setContextStoreCurrentObjectMetadataItemId(objectMetadataItem.id);
|
|
}
|
|
}, [
|
|
setViewObjectMetadataId,
|
|
setAvailableFieldDefinitions,
|
|
objectMetadataItem,
|
|
setAvailableTableColumns,
|
|
setTableColumns,
|
|
recordTableId,
|
|
setContextStoreCurrentObjectMetadataItemId,
|
|
contextStoreCurrentObjectMetadataItemId,
|
|
]);
|
|
|
|
return <></>;
|
|
};
|