chat / client /src /hooks /Files /useDeleteFilesFromTable.tsx
helloya20's picture
Upload 2345 files
f0743f4 verified
import { useQueryClient } from '@tanstack/react-query';
import { QueryKeys } from 'librechat-data-provider';
import type { BatchFile, TFile } from 'librechat-data-provider';
import { useDeleteFilesMutation } from '~/data-provider';
import useFileDeletion from './useFileDeletion';
export default function useDeleteFilesFromTable(callback?: () => void) {
const queryClient = useQueryClient();
const deletionMutation = useDeleteFilesMutation({
onMutate: async (variables) => {
const { files } = variables;
if (!files.length) {
return new Map<string, BatchFile>();
}
const filesToDeleteMap = files.reduce((map, file) => {
map.set(file.file_id, file);
return map;
}, new Map<string, BatchFile>());
return { filesToDeleteMap };
},
onSuccess: (data, variables, context) => {
console.log('Files deleted');
const { filesToDeleteMap } = context as { filesToDeleteMap: Map<string, BatchFile> };
queryClient.setQueryData([QueryKeys.files], (oldFiles: TFile[] | undefined) => {
const { files } = variables;
return files.length
? oldFiles?.filter((file) => !filesToDeleteMap.has(file.file_id))
: oldFiles;
});
callback?.();
},
onError: (error) => {
console.log('Error deleting files:', error);
callback?.();
},
});
return useFileDeletion({ mutateAsync: deletionMutation.mutateAsync });
}