From a6e1bb595b81c6042f7a261f7f7e126ebab07436 Mon Sep 17 00:00:00 2001 From: nicoschmdt Date: Mon, 10 Nov 2025 13:50:52 -0300 Subject: [PATCH 1/2] frontend: add streamsaver package to handle large files download --- core/frontend/bun.lockb | Bin 421147 -> 421508 bytes core/frontend/package.json | 1 + 2 files changed, 1 insertion(+) diff --git a/core/frontend/bun.lockb b/core/frontend/bun.lockb index b295391307b8b9f1a5fbd453c75d7be0a3931e0f..66d4740e72da31b9dfe6b17e3cdc67588df267a2 100755 GIT binary patch delta 74604 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 delta 74984 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 diff --git a/core/frontend/package.json b/core/frontend/package.json index 60ed95e129..083c40c7fa 100644 --- a/core/frontend/package.json +++ b/core/frontend/package.json @@ -60,6 +60,7 @@ "semver": "^7.3.8", "semver-stable": "^3.0.0", "simple-icons": "11", + "streamsaver": "^2.0.6", "three": "0.156.1", "util": "^0.12.5", "uuid": "^9.0.0", From 5e9984d79c479375f6dc863e1d2bd808b08e03c8 Mon Sep 17 00:00:00 2001 From: nicoschmdt Date: Wed, 5 Nov 2025 16:56:01 -0300 Subject: [PATCH 2/2] frontend: refactor log download in the settings menu --- .../src/components/app/SettingsMenu.vue | 62 +++++++------ .../components/common/ProgressInformation.vue | 86 +++++++++++++++++++ core/frontend/src/libs/filebrowser.ts | 38 +++++++- core/frontend/src/utils/folder_manager.ts | 38 ++++++++ 4 files changed, 198 insertions(+), 26 deletions(-) create mode 100644 core/frontend/src/components/common/ProgressInformation.vue create mode 100644 core/frontend/src/utils/folder_manager.ts diff --git a/core/frontend/src/components/app/SettingsMenu.vue b/core/frontend/src/components/app/SettingsMenu.vue index 658a0340ff..2ca72374a9 100644 --- a/core/frontend/src/components/app/SettingsMenu.vue +++ b/core/frontend/src/components/app/SettingsMenu.vue @@ -62,6 +62,7 @@ @@ -73,7 +74,7 @@ @@ -85,24 +86,22 @@
- +
+
+ -
-
- Deleting: {{ current_deletion_path }} -
-
- Size: {{ formatSize(current_deletion_size / 1024) }} -
-
- Total: {{ formatSize(current_deletion_total_size / 1024) }} -
-
- Status: {{ current_deletion_status }} -
-
@@ -116,6 +115,7 @@ @@ -127,7 +127,7 @@ @@ -137,6 +137,18 @@ + +
+ +
+
+ @@ -175,12 +187,13 @@ diff --git a/core/frontend/src/libs/filebrowser.ts b/core/frontend/src/libs/filebrowser.ts index c5ed140bef..072b117100 100644 --- a/core/frontend/src/libs/filebrowser.ts +++ b/core/frontend/src/libs/filebrowser.ts @@ -2,6 +2,7 @@ import Notifier from '@/libs/notifier' import { FilebrowserCredentials, FilebrowserFile, FilebrowserFolder } from '@/types/filebrowser' import { filebrowser_service } from '@/types/frontend_services' import back_axios from '@/utils/api' +import streamSaver from 'streamsaver' const notifier = new Notifier(filebrowser_service) @@ -168,10 +169,43 @@ class Filebrowser { /* Download folder */ /** * @param folder - FilebrowserFolder + * @param progressHandler - The progress handler for the download * */ - async downloadFolder(folder: FilebrowserFolder): Promise { + async downloadFolder( + folder: FilebrowserFolder, + progressHandler: (event: any) => void, + ): Promise { const url = `${filebrowser_url}/raw/${folder.path}/?algo=zip&auth=${await this.filebrowserToken()}` - window.open(url) + + const response = await fetch(url, { + headers: { Authorization: `Bearer ${await this.filebrowserToken()}` }, + }) + if (!response.ok || !response.body) throw new Error('Failed to download folder'); + + const contentLength = Number(response.headers.get('content-length') ?? 0) + const fileStream = streamSaver.createWriteStream(`${folder.name}.zip`, { + size: contentLength || undefined, + }) + const writer = fileStream.getWriter() + const reader = response.body.getReader() + + let downloaded = 0 + try { + while (true) { + const { done, value } = await reader.read() + if (done) break + downloaded += value.length + progressHandler({ bytes: value.byteLength, loaded: downloaded, total: contentLength }) + await writer.write(value) + } + + await writer.close() + notifier.pushSuccess('DOWNLOAD_COMPLETE', `Folder ${folder.path} downloaded successfully`) + } catch (err) { + await writer.abort(err) + notifier.pushError('DOWNLOAD_FAIL', `Could not download folder ${folder.path}`) + throw err + } } } diff --git a/core/frontend/src/utils/folder_manager.ts b/core/frontend/src/utils/folder_manager.ts new file mode 100644 index 0000000000..eefa061417 --- /dev/null +++ b/core/frontend/src/utils/folder_manager.ts @@ -0,0 +1,38 @@ +import filebrowser from "@/libs/filebrowser"; + +export class FolderManager { + public downloadedBytes: number = 0; + public totalBytes: number = 0; + public startTime: number = 0; + public downloadSpeed: number = 0; + + public inProgress: boolean = false; + + async downloadFolder( + logs: string, + ): Promise { + const folder = await filebrowser.fetchFolder(logs); + this.inProgress = true; + await filebrowser.downloadFolder(folder, (event) => { + if (this.startTime === 0) this.startTime = Date.now() + const current_time = Date.now() + const elapsed = (current_time - this.startTime) / 1000 + this.startTime = current_time + + this.downloadedBytes = event.bytes + this.totalBytes = event.loaded + this.downloadSpeed = event.bytes / elapsed + }) + .finally(() => { + this.resetDownloadVariables() + this.inProgress = false; + }) + } + + resetDownloadVariables(): void { + this.downloadedBytes = 0; + this.totalBytes = 0; + this.startTime = 0; + this.downloadSpeed = 0; + } +} \ No newline at end of file