From: Daniel Kutyła Date: Mon, 11 Jan 2021 15:58:44 +0000 (+0100) Subject: Merge branch '17016-delete-single-file-deletes-whole-collection' X-Git-Tag: 2.1.2~16 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/7437e0b4a85480fc6ca977488a5bb501e7fa1e3e Merge branch '17016-delete-single-file-deletes-whole-collection' closes #17016 Arvados-DCO-1.1-Signed-off-by: Daniel Kutyła --- 7437e0b4a85480fc6ca977488a5bb501e7fa1e3e diff --cc src/services/collection-service/collection-service.ts index 04c01a11,5ae03b89..c46c3e27 --- a/src/services/collection-service/collection-service.ts +++ b/src/services/collection-service/collection-service.ts @@@ -44,16 -36,25 +44,26 @@@ export class CollectionService extends } async deleteFiles(collectionUuid: string, filePaths: string[]) { - if (collectionUuid === "" || filePaths.length === 0) { return; } - for (const path of filePaths) { - const splittedPath = path.split('/'); - if (collectionUuid) { - await this.webdavClient.delete(`c=${collectionUuid}/${splittedPath[1]}`); - } else { + const sortedUniquePaths = Array.from(new Set(filePaths)) + .sort((a, b) => a.length - b.length) + .reduce((acc, currentPath) => { + const parentPathFound = acc.find((parentPath) => currentPath.indexOf(`${parentPath}/`) > -1); + + if (!parentPathFound) { + return [...acc, currentPath]; + } + + return acc; + }, []); + + for (const path of sortedUniquePaths) { + if (path.indexOf(collectionUuid) === -1) { await this.webdavClient.delete(`c=${collectionUuid}${path}`); + } else { + await this.webdavClient.delete(`c=${path}`); } } + await this.update(collectionUuid, { preserveVersion: true }); } async uploadFiles(collectionUuid: string, files: File[], onProgress?: UploadProgress) { diff --cc src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts index 80d61ea0,373ee04e..c7a3bdc5 --- a/src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts +++ b/src/store/collection-panel/collection-panel-files/collection-panel-files-actions.ts @@@ -42,12 -42,13 +42,13 @@@ export const loadCollectionFiles = (uui const mapped = mapTreeValues(services.collectionService.extendFileURL)(sorted); dispatch(collectionPanelFilesAction.SET_COLLECTION_FILES(mapped)); dispatch(progressIndicatorActions.STOP_WORKING(COLLECTION_PANEL_LOAD_FILES)); - }).catch(e => { + }).catch(() => { dispatch(progressIndicatorActions.STOP_WORKING(COLLECTION_PANEL_LOAD_FILES)); dispatch(snackbarActions.OPEN_SNACKBAR({ - message: `Error getting file list: ${e.errors[0]}`, + message: `Error getting file list`, hideDuration: 2000, - kind: SnackbarKind.ERROR })); + kind: SnackbarKind.ERROR + })); }); };