Files
twenty/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts
T
Lucas Bordeau 7e7837abf3 Fixed aggregate footer not displayed (#14276)
This PR fixes a bug that made the aggregate footer not displayed.

It was because of a wrong filter on `visibleRecordFields` array.

Follow-up of https://github.com/twentyhq/twenty/pull/14048

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-09-03 13:54:44 +02:00

63 lines
2.3 KiB
TypeScript

import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState';
import { recordIndexKanbanAggregateOperationState } from '@/object-record/record-index/states/recordIndexKanbanAggregateOperationState';
import { type ExtendedAggregateOperations } from '@/object-record/record-table/types/ExtendedAggregateOperations';
import { convertExtendedAggregateOperationToAggregateOperation } from '@/object-record/utils/convertExtendedAggregateOperationToAggregateOperation';
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
import { useRefreshCoreViewsByObjectMetadataId } from '@/views/hooks/useRefreshCoreViewsByObjectMetadataId';
import { useUpdateView } from '@/views/hooks/useUpdateView';
import { useCallback } from 'react';
import { useSetRecoilState } from 'recoil';
export const useUpdateViewAggregate = () => {
const currentViewId = useRecoilComponentValue(
contextStoreCurrentViewIdComponentState,
);
const { updateView } = useUpdateView();
const setRecordIndexKanbanAggregateOperationState = useSetRecoilState(
recordIndexKanbanAggregateOperationState,
);
const { refreshCoreViewsByObjectMetadataId } =
useRefreshCoreViewsByObjectMetadataId();
const updateViewAggregate = useCallback(
({
kanbanAggregateOperationFieldMetadataId,
kanbanAggregateOperation,
objectMetadataId,
}: {
kanbanAggregateOperationFieldMetadataId: string | null;
kanbanAggregateOperation: ExtendedAggregateOperations | null;
objectMetadataId: string;
}) => {
const convertedKanbanAggregateOperation =
convertExtendedAggregateOperationToAggregateOperation(
kanbanAggregateOperation,
);
updateView({
id: currentViewId,
kanbanAggregateOperationFieldMetadataId,
kanbanAggregateOperation: convertedKanbanAggregateOperation,
});
setRecordIndexKanbanAggregateOperationState({
operation: kanbanAggregateOperation,
fieldMetadataId: kanbanAggregateOperationFieldMetadataId,
});
refreshCoreViewsByObjectMetadataId(objectMetadataId);
},
[
currentViewId,
updateView,
setRecordIndexKanbanAggregateOperationState,
refreshCoreViewsByObjectMetadataId,
],
);
return {
updateViewAggregate,
};
};