78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
import { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';
|
|
import { useIntl } from 'react-intl';
|
|
import { useQueryClient, useMutation } from 'react-query';
|
|
import { pluginId } from '../pluginId.mjs';
|
|
import 'byte-size';
|
|
import 'date-fns';
|
|
import { getTrad } from '../utils/getTrad.mjs';
|
|
import 'qs';
|
|
import '../constants.mjs';
|
|
import '../utils/urlYupSchema.mjs';
|
|
|
|
const useBulkRemove = ()=>{
|
|
const { toggleNotification } = useNotification();
|
|
const { formatMessage } = useIntl();
|
|
const queryClient = useQueryClient();
|
|
const { post } = useFetchClient();
|
|
const bulkRemoveQuery = (filesAndFolders)=>{
|
|
const payload = filesAndFolders.reduce((acc, selected)=>{
|
|
const { id, type } = selected;
|
|
const key = type === 'asset' ? 'fileIds' : 'folderIds';
|
|
if (!acc[key]) {
|
|
acc[key] = [];
|
|
}
|
|
acc[key].push(id);
|
|
return acc;
|
|
}, {});
|
|
return post('/upload/actions/bulk-delete', payload);
|
|
};
|
|
const mutation = useMutation(bulkRemoveQuery, {
|
|
onSuccess (res) {
|
|
const { data: { data } } = res;
|
|
if (data?.files?.length > 0) {
|
|
queryClient.refetchQueries([
|
|
pluginId,
|
|
'assets'
|
|
], {
|
|
active: true
|
|
});
|
|
queryClient.refetchQueries([
|
|
pluginId,
|
|
'asset-count'
|
|
], {
|
|
active: true
|
|
});
|
|
}
|
|
if (data?.folders?.length > 0) {
|
|
queryClient.refetchQueries([
|
|
pluginId,
|
|
'folders'
|
|
], {
|
|
active: true
|
|
});
|
|
}
|
|
toggleNotification({
|
|
type: 'success',
|
|
message: formatMessage({
|
|
id: getTrad('modal.remove.success-label'),
|
|
defaultMessage: 'Elements have been successfully deleted.'
|
|
})
|
|
});
|
|
},
|
|
onError (error) {
|
|
toggleNotification({
|
|
type: 'danger',
|
|
message: error?.message
|
|
});
|
|
}
|
|
});
|
|
const remove = (...args)=>mutation.mutateAsync(...args);
|
|
return {
|
|
...mutation,
|
|
remove
|
|
};
|
|
};
|
|
|
|
export { useBulkRemove };
|
|
//# sourceMappingURL=useBulkRemove.mjs.map
|