Bartosz Dziewoński has uploaded a new change for review.
https://gerrit.wikimedia.org/r/248923
Change subject: mw.FormDataTransport: Get progress notifications for the whole
file
......................................................................
mw.FormDataTransport: Get progress notifications for the whole file
Bug: T89194
Change-Id: I3e266a30d3d5d64aa54f595da6eeab78a0395ced
---
M resources/handlers/mw.ApiUploadFormDataHandler.js
M resources/transports/mw.FormDataTransport.js
2 files changed, 24 insertions(+), 10 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UploadWizard
refs/changes/23/248923/1
diff --git a/resources/handlers/mw.ApiUploadFormDataHandler.js
b/resources/handlers/mw.ApiUploadFormDataHandler.js
index cbd6c87..1efcbe1 100644
--- a/resources/handlers/mw.ApiUploadFormDataHandler.js
+++ b/resources/handlers/mw.ApiUploadFormDataHandler.js
@@ -58,16 +58,13 @@
handler.upload.ui.setStatus(
'mwe-upwiz-transport-started' );
handler.upload.ui.showTransportProgress();
return handler.transport.upload(
handler.upload.file )
- .progress( function ( evt, xhr ) {
- var fraction;
-
+ .progress( function ( fraction ) {
if ( handler.upload.state ===
'aborted' ) {
- xhr.abort();
+
handler.transport.xhr.abort();
return;
}
- if ( evt.lengthComputable ) {
- fraction = parseFloat(
evt.loaded / evt.total );
+ if ( fraction !== null ) {
handler.upload.setTransportProgress( fraction );
}
} ).then( function ( result ) {
diff --git a/resources/transports/mw.FormDataTransport.js
b/resources/transports/mw.FormDataTransport.js
index 85f8598..5a16281 100644
--- a/resources/transports/mw.FormDataTransport.js
+++ b/resources/transports/mw.FormDataTransport.js
@@ -64,7 +64,13 @@
transport = this;
xhr.upload.addEventListener( 'progress', function ( evt ) {
- deferred.notify( evt, xhr );
+ var fraction;
+ if ( evt.lengthComputable ) {
+ fraction = parseFloat( evt.loaded / evt.total );
+ } else {
+ fraction = null;
+ }
+ deferred.notify( fraction );
}, false );
xhr.addEventListener( 'abort', function ( evt ) {
@@ -130,7 +136,8 @@
* @return {jQuery.Promise}
*/
mw.FormDataTransport.prototype.upload = function ( file ) {
- var formData, deferred, ext,
+ var formData, deferred, ext, totalUploaded,
+ chunkSize = this.chunkSize,
transport = this;
// use timestamp + filename to avoid conflicts on server
@@ -145,8 +152,18 @@
this.tempname = this.tempname.substr( 0, 240 -
ext.length - 1 ) + '.' + ext;
}
- if ( this.config.enableChunked && file.size > this.chunkSize ) {
- return this.uploadChunk( file, 0 );
+ if ( this.config.enableChunked && file.size > chunkSize ) {
+ totalUploaded = 0;
+ // The progress notifications give us per-chunk
progress, filter them to get progress
+ // for the whole file
+ return this.uploadChunk( file, 0 ).then( null, null,
function ( fraction ) {
+ if ( fraction === 1 ) {
+ // We completed a chunk
+ totalUploaded += chunkSize;
+ fraction = 0;
+ }
+ return ( totalUploaded + fraction * chunkSize )
/ file.size;
+ } );
} else {
deferred = $.Deferred();
this.xhr = this.createXHR( deferred );
--
To view, visit https://gerrit.wikimedia.org/r/248923
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3e266a30d3d5d64aa54f595da6eeab78a0395ced
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/UploadWizard
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits