From 3a230b8dba0cd5bcb7a874e77056b8c416acd818 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 12 Jan 2022 16:39:45 +0100 Subject: [PATCH] Properly hide progress bar after error Whenever an error occurs, also hide the progress bar. The logic was also adjusted to properly detect uploads that are pending deletion, in which case the progress bar can already be hidden. Signed-off-by: Vincent Petry --- apps/files/js/file-upload.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index 64a12e0846d..9dec0de0846 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -323,7 +323,6 @@ OC.FileUpload.prototype = { }, _delete: function() { - var self = this; if (this.data.isChunked) { this._deleteChunkFolder() } @@ -334,7 +333,6 @@ OC.FileUpload.prototype = { * Abort the upload */ abort: function() { - var self = this; if (this.aborted) { return } @@ -691,11 +689,24 @@ OC.Uploader.prototype = _.extend({ // the upload info there still var self = this; var uploadId = upload.data.uploadId; + // mark as deleted for the progress bar + this._uploads[uploadId].deleted = true; window.setTimeout(function() { delete self._uploads[uploadId]; }, 5000) }, + _activeUploadCount: function() { + var count = 0; + for (var key in this._uploads) { + if (!this._uploads[key].deleted) { + count++; + } + } + + return count; + }, + showUploadCancelMessage: _.debounce(function() { OC.Notification.show(t('files', 'Upload cancelled.'), {timeout : 7, type: 'error'}); }, 500), @@ -1321,9 +1332,9 @@ OC.Uploader.prototype = _.extend({ self._pendingUploadDoneCount++; - upload.done().then(function() { + upload.done().always(function() { self._pendingUploadDoneCount--; - if (Object.keys(self._uploads).length === 0 && self._pendingUploadDoneCount === 0) { + if (self._activeUploadCount() === 0 && self._pendingUploadDoneCount === 0) { // All the uploads ended and there is no pending // operation, so hide the progress bar. // Note that this happens here only with chunked @@ -1337,7 +1348,7 @@ OC.Uploader.prototype = _.extend({ // hides the progress bar in that case). self._hideProgressBar(); } - + }).done(function() { self.trigger('done', e, upload); }).fail(function(status, response) { if (upload.aborted) {