From 99de4e57e18df54596e168a57b94c55d7a834472 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Mon, 31 Oct 2022 10:28:29 +0100 Subject: [PATCH] fix: share finishes before all files are uploaded --- frontend/src/pages/upload.tsx | 7 ++----- frontend/src/services/share.service.ts | 16 ++++++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/frontend/src/pages/upload.tsx b/frontend/src/pages/upload.tsx index 246b08c..7090b69 100644 --- a/frontend/src/pages/upload.tsx +++ b/frontend/src/pages/upload.tsx @@ -41,13 +41,11 @@ const Upload = () => { ); share = await shareService.create(id, expiration, security); for (let i = 0; i < files.length; i++) { - const progressCallBack = (bytesProgress: number) => { + const progressCallBack = (progress: number) => { setFiles((files) => { return files.map((file, callbackIndex) => { if (i == callbackIndex) { - file.uploadingProgress = Math.round( - (100 * bytesProgress) / files[i].size - ); + file.uploadingProgress = progress; } return file; }); @@ -77,7 +75,6 @@ const Upload = () => { (file) => file.uploadingProgress >= 100 || file.uploadingProgress == -1 ) ) { - console.log(files.length); const fileErrorCount = files.filter( (file) => file.uploadingProgress == -1 ).length; diff --git a/frontend/src/services/share.service.ts b/frontend/src/services/share.service.ts index 5a4f51f..fd8a698 100644 --- a/frontend/src/services/share.service.ts +++ b/frontend/src/services/share.service.ts @@ -75,12 +75,16 @@ const uploadFile = async ( let formData = new FormData(); formData.append("file", file); - return ( - await api.post(`shares/${shareId}/files`, formData, { - onUploadProgress: (progressEvent) => - progressCallBack(progressEvent.loaded), - }) - ).data; + const response = await api.post(`shares/${shareId}/files`, formData, { + onUploadProgress: (progressEvent) => { + const uploadingProgress = Math.round( + (100 * progressEvent.loaded) / progressEvent.total + ); + if (uploadingProgress < 100) progressCallBack(uploadingProgress); + }, + }); + progressCallBack(100); + return response; }; export default {