Fix total upload size overwritten by next upload

The upload progress is based on the "totalToUpload" variable. However,
as the variable is set when an upload is submitted, if another upload is
submitted before the previous one finished the upload progress only took
into account the size of the new upload (although the upload itself
worked fine; the files of the new submitted upload are added to the
active one). Now "totalToUpload" is either increased or set depending on
whether an upload is active or not.

Note that although "data.total" holds the total size of the files being
uploaded "totalToUpload" needs to be used in "fileuploadprogressall"
instead; "totalToUpload" is calculated when the upload is submitted, but
since 7c4c5fe6ae the actual upload of the files, and thus updating the
value of "data.total", may be deferred until the parent folders were
created.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
Daniel Calviño Sánchez 2020-12-23 18:53:01 +01:00 committed by backportbot[bot]
parent 6a85c12b4b
commit acdf895c2d
1 changed files with 4 additions and 1 deletions

View File

@ -586,7 +586,10 @@ OC.Uploader.prototype = _.extend({
_.each(uploads, function(upload) { _.each(uploads, function(upload) {
self._uploads[upload.data.uploadId] = upload; self._uploads[upload.data.uploadId] = upload;
}); });
self.totalToUpload = _.reduce(uploads, function(memo, upload) { return memo+upload.getFile().size; }, 0); if (!self._uploading) {
self.totalToUpload = 0;
}
self.totalToUpload += _.reduce(uploads, function(memo, upload) { return memo+upload.getFile().size; }, 0);
var semaphore = new OCA.Files.Semaphore(5); var semaphore = new OCA.Files.Semaphore(5);
var promises = _.map(uploads, function(upload) { var promises = _.map(uploads, function(upload) {
return semaphore.acquire().then(function(){ return semaphore.acquire().then(function(){