From c169c6337c6fd2ec353a77301d957af6f6777456 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 24 Sep 2021 13:02:19 +0200 Subject: [PATCH] Switch to resource id based archiver backend --- .../AppBar/SelectedResources/BatchActions.vue | 3 +-- .../src/helpers/download/downloadAsArchive.ts | 14 +++++++------- .../src/mixins/actions/downloadFolder.js | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/web-app-files/src/components/AppBar/SelectedResources/BatchActions.vue b/packages/web-app-files/src/components/AppBar/SelectedResources/BatchActions.vue index 0e2898aaad5..6bd39237d15 100644 --- a/packages/web-app-files/src/components/AppBar/SelectedResources/BatchActions.vue +++ b/packages/web-app-files/src/components/AppBar/SelectedResources/BatchActions.vue @@ -340,8 +340,7 @@ export default { async downloadAsArchive() { await triggerDownloadAsArchive({ - folderPath: this.currentFolder.path, - fileNames: this.selectedFiles.map(f => f.name), + fileIds: this.selectedFiles.map(r => r.fileId), token: this.getToken }).catch(e => { console.error(e) diff --git a/packages/web-app-files/src/helpers/download/downloadAsArchive.ts b/packages/web-app-files/src/helpers/download/downloadAsArchive.ts index 3fd0181547a..52edbff392a 100644 --- a/packages/web-app-files/src/helpers/download/downloadAsArchive.ts +++ b/packages/web-app-files/src/helpers/download/downloadAsArchive.ts @@ -1,10 +1,10 @@ import { archiverService, clientService } from '../../services' import { AxiosResponse } from 'axios' import { major } from 'semver' +import { RuntimeError } from 'web-runtime/src/container/error' interface TriggerDownloadAsArchiveOptions { - folderPath: string - fileNames?: string[] + fileIds: string[] token: string // TODO: solve download from a) public link b) public link with password } @@ -12,15 +12,15 @@ export const triggerDownloadAsArchive = async ( options: TriggerDownloadAsArchiveOptions ): Promise => { if (!isDownloadAsArchiveAvailable()) { - return + throw new RuntimeError('no archiver capability available') + } + if (options.fileIds.length === 0) { + throw new RuntimeError('requested archive with empty list of resources') } const majorVersion = major(archiverService.capability.version) switch (majorVersion) { case 2: { - const queryParams = [ - 'dir=' + options.folderPath, - ...(options.fileNames || []).map(f => 'file=' + f) - ] + const queryParams = [...options.fileIds.map(id => `file=${id}`)] const url = archiverService.url + '?' + queryParams.join('&') return await clientService.httpAuthenticated(options.token).get(url) } diff --git a/packages/web-app-files/src/mixins/actions/downloadFolder.js b/packages/web-app-files/src/mixins/actions/downloadFolder.js index 22d20d3dcb1..6d8be1f0847 100644 --- a/packages/web-app-files/src/mixins/actions/downloadFolder.js +++ b/packages/web-app-files/src/mixins/actions/downloadFolder.js @@ -42,7 +42,7 @@ export default { methods: { async $_downloadFolder_trigger(resource) { await triggerDownloadAsArchive({ - folderPath: resource.path, + fileIds: [resource.fileId], token: this.getToken }) }