Aggregate queries and field metadata deletion (#9660)

This commit is contained in:
Marie
2025-01-16 14:46:56 +01:00
committed by GitHub
parent 560f715c37
commit 5982a5a8ba
7 changed files with 184 additions and 6 deletions

View File

@ -1,13 +1,15 @@
import { useMutation } from '@apollo/client';
import { useApolloClient, useMutation } from '@apollo/client';
import {
DeleteOneFieldMetadataItemMutation,
DeleteOneFieldMetadataItemMutationVariables,
} from '~/generated-metadata/graphql';
import { DELETE_ONE_FIELD_METADATA_ITEM } from '../graphql/mutations';
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
import { recordIndexKanbanAggregateOperationState } from '@/object-record/record-index/states/recordIndexKanbanAggregateOperationState';
import { AGGREGATE_OPERATIONS } from '@/object-record/record-table/constants/AggregateOperations';
import { useRecoilState } from 'recoil';
import { DELETE_ONE_FIELD_METADATA_ITEM } from '../graphql/mutations';
import { useApolloMetadataClient } from './useApolloMetadataClient';
export const useDeleteOneFieldMetadataItem = () => {
@ -23,6 +25,27 @@ export const useDeleteOneFieldMetadataItem = () => {
const { refreshObjectMetadataItems } =
useRefreshObjectMetadataItems('network-only');
const [
recordIndexKanbanAggregateOperation,
setRecordIndexKanbanAggregateOperation,
] = useRecoilState(recordIndexKanbanAggregateOperationState);
const apolloClient = useApolloClient();
const resetRecordIndexKanbanAggregateOperation = async (
idToDelete: DeleteOneFieldMetadataItemMutationVariables['idToDelete'],
) => {
if (recordIndexKanbanAggregateOperation?.fieldMetadataId === idToDelete) {
setRecordIndexKanbanAggregateOperation({
operation: AGGREGATE_OPERATIONS.count,
fieldMetadataId: null,
});
}
await apolloClient.refetchQueries({
include: ['FindManyViews'],
});
};
const deleteOneFieldMetadataItem = async (
idToDelete: DeleteOneFieldMetadataItemMutationVariables['idToDelete'],
) => {
@ -32,6 +55,8 @@ export const useDeleteOneFieldMetadataItem = () => {
},
});
await resetRecordIndexKanbanAggregateOperation(idToDelete);
await refreshObjectMetadataItems();
return result;