File size: 1,450 Bytes
f0743f4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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 });
}
|