From 1e6d4847078987e23d11fd7663bf489c8e5bb85d Mon Sep 17 00:00:00 2001 From: vkovtun <viktor.kovtun@id.ethz.ch> Date: Mon, 29 Apr 2024 19:08:03 +0200 Subject: [PATCH] BIS-753: Rolled back file download to use the blob instead of the experimental File System API. --- .../database/data-browser/DataBrowser.jsx | 17 ++++------ .../data-browser/DataBrowserController.js | 33 ------------------- 2 files changed, 7 insertions(+), 43 deletions(-) diff --git a/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx b/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx index ca7830e87a9..1af92879bb6 100644 --- a/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx +++ b/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx @@ -340,15 +340,12 @@ class DataBrowser extends React.Component { } async downloadFile(file) { - if ('showSaveFilePicker' in window) { - try { - this.setState({ loading: true, progress: 0 }) - await this.controller.downloadAndSaveFile(file, this.updateProgress) - } finally { - this.setState({ loading: false, progress: 0 }) - } - } else { - this.openErrorDialog(messages.get(messages.DOWNLOADS_NOT_SUPPORTED)) + try { + this.setState({ loading: true, progress: 0 }) + const blob = await this.fileToBlob(file) + this.downloadBlob(blob, file.name) + } finally { + this.setState({ loading: false, progress: 0 }) } } @@ -366,7 +363,7 @@ class DataBrowser extends React.Component { } async fileToBlob(file) { - const dataArray = await this.controller.downloadFile(file) + const dataArray = await this.controller.download(file) return new Blob(dataArray, { type: this.inferMimeType(file.path) }) } diff --git a/ui-admin/src/js/components/database/data-browser/DataBrowserController.js b/ui-admin/src/js/components/database/data-browser/DataBrowserController.js index 693cd0da45d..6ff572b5dd8 100644 --- a/ui-admin/src/js/components/database/data-browser/DataBrowserController.js +++ b/ui-admin/src/js/components/database/data-browser/DataBrowserController.js @@ -217,39 +217,6 @@ export default class DataBrowserController extends ComponentController { return dataArray } - async downloadAndSaveFile(file, onProgressUpdate) { - try { - const fileHandle = await window.showSaveFilePicker( - { - startIn: 'downloads', - id: 'download-file-picker', - suggestedName: file.name - }) - const writable = await fileHandle.createWritable() - - try { - let offset = 0 - - const size = file.size - while (offset < size) { - const chunk = await this._download(file, offset) - await writable.write(chunk) - offset += CHUNK_SIZE - - const progress = Math.round((offset / size) * 100) - onProgressUpdate(Math.min(progress, 100)) - } - } finally { - onProgressUpdate(100) - await writable.close() - } - } catch (error) { - if (error.name !== 'AbortError') { - throw error - } - } - } - async _download(file, offset) { const limit = Math.min(CHUNK_SIZE, file.size - offset) return await openbis.read(this.owner, file.path, offset, limit) -- GitLab