mirror of
https://github.com/strapi/strapi.git
synced 2025-09-25 08:19:07 +00:00
Merge bulkRemove hooks into useBulkRemove()
This commit is contained in:
parent
678f5db8a6
commit
7d045baf36
@ -4,19 +4,24 @@ import { useNotification } from '@strapi/helper-plugin';
|
||||
import pluginId from '../pluginId';
|
||||
import { removeAssetRequest } from '../utils/removeAssetQuery';
|
||||
|
||||
const bulkRemoveQuery = folderIDs => {
|
||||
const promises = folderIDs.map(folderID => removeAssetRequest(folderID));
|
||||
|
||||
return Promise.all(promises);
|
||||
};
|
||||
|
||||
export const useBulkRemoveFolder = () => {
|
||||
export const useBulkRemove = type => {
|
||||
const toggleNotification = useNotification();
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
const bulkRemoveQuery = ids => {
|
||||
const promises = ids.map(id => removeAssetRequest(id));
|
||||
|
||||
return Promise.all(promises);
|
||||
};
|
||||
|
||||
const mutation = useMutation(bulkRemoveQuery, {
|
||||
onSuccess: () => {
|
||||
queryClient.refetchQueries([pluginId, 'folders'], { active: true });
|
||||
if (type === 'folders') {
|
||||
queryClient.refetchQueries([pluginId, 'folders'], { active: true });
|
||||
} else if (type === 'assets') {
|
||||
queryClient.refetchQueries([pluginId, 'assets'], { active: true });
|
||||
queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });
|
||||
}
|
||||
|
||||
toggleNotification({
|
||||
type: 'success',
|
||||
@ -31,7 +36,7 @@ export const useBulkRemoveFolder = () => {
|
||||
},
|
||||
});
|
||||
|
||||
const removeFolders = folderIDs => mutation.mutateAsync(folderIDs);
|
||||
const remove = (...args) => mutation.mutateAsync(...args);
|
||||
|
||||
return { ...mutation, removeFolders };
|
||||
return { ...mutation, remove };
|
||||
};
|
@ -1,38 +0,0 @@
|
||||
import { useMutation, useQueryClient } from 'react-query';
|
||||
import { useNotification } from '@strapi/helper-plugin';
|
||||
|
||||
import pluginId from '../pluginId';
|
||||
import { removeAssetRequest } from '../utils/removeAssetQuery';
|
||||
|
||||
const bulkRemoveQuery = assetIds => {
|
||||
const promises = assetIds.map(assetId => removeAssetRequest(assetId));
|
||||
|
||||
return Promise.all(promises);
|
||||
};
|
||||
|
||||
export const useBulkRemoveAsset = () => {
|
||||
const toggleNotification = useNotification();
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
const mutation = useMutation(bulkRemoveQuery, {
|
||||
onSuccess: () => {
|
||||
queryClient.refetchQueries([pluginId, 'assets'], { active: true });
|
||||
queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });
|
||||
|
||||
toggleNotification({
|
||||
type: 'success',
|
||||
message: {
|
||||
id: 'modal.remove.success-label',
|
||||
defaultMessage: 'The asset has been successfully removed.',
|
||||
},
|
||||
});
|
||||
},
|
||||
onError: error => {
|
||||
toggleNotification({ type: 'warning', message: error.message });
|
||||
},
|
||||
});
|
||||
|
||||
const removeAssets = assetIds => mutation.mutateAsync(assetIds);
|
||||
|
||||
return { ...mutation, removeAssets };
|
||||
};
|
@ -7,24 +7,24 @@ import { Stack } from '@strapi/design-system/Stack';
|
||||
import Trash from '@strapi/icons/Trash';
|
||||
import { ConfirmDialog } from '@strapi/helper-plugin';
|
||||
|
||||
import { useBulkRemoveAsset } from '../../../hooks/useBulkRemoveAsset';
|
||||
import { useBulkRemoveFolder } from '../../../hooks/useBulkRemoveFolder';
|
||||
import { useBulkRemove } from '../../../hooks/useBulkRemove';
|
||||
import getTrad from '../../../utils/getTrad';
|
||||
|
||||
export const BulkDeleteButton = ({ selected, onSuccess }) => {
|
||||
const { formatMessage } = useIntl();
|
||||
const [showConfirmDialog, setShowConfirmDialog] = useState(false);
|
||||
const { isLoading: isLoadingAssets, remove: removeAssets } = useBulkRemove('assets');
|
||||
const { isLoading: isLoadingFolders, remove: removeFolders } = useBulkRemove('folders');
|
||||
|
||||
const { isLoadingAssets, removeAssets } = useBulkRemoveAsset();
|
||||
const { isLoadingFolders, removeFolders } = useBulkRemoveFolder();
|
||||
const isLoading = isLoadingAssets || isLoadingFolders;
|
||||
|
||||
const handleConfirmRemove = async () => {
|
||||
const assets = selected.filter(({ type }) => type === 'asset');
|
||||
const folders = selected.filter(({ type }) => type === 'folder');
|
||||
|
||||
await Promise.all([
|
||||
removeAssets(selected.filter(({ type }) => type === 'asset').map(({ asset: { id } }) => id)),
|
||||
removeFolders(
|
||||
selected.filter(({ type }) => type === 'folder').map(({ folder: { id } }) => id)
|
||||
),
|
||||
assets.length > 0 && removeAssets(assets.map(({ asset: { id } }) => id)),
|
||||
folders.length > 0 && removeFolders(folders.map(({ folder: { id } }) => id)),
|
||||
]);
|
||||
|
||||
onSuccess();
|
||||
|
Loading…
x
Reference in New Issue
Block a user