jenkins-bot has submitted this change and it was merged.

Change subject: Remove upload object from FDT
......................................................................


Remove upload object from FDT

Bug: T77124
Change-Id: Ic8b76a6fa884e034715d2191add420e549b16880
---
M resources/mw.ApiUploadFormDataHandler.js
M resources/mw.FormDataTransport.js
2 files changed, 47 insertions(+), 38 deletions(-)

Approvals:
  Gilles: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/resources/mw.ApiUploadFormDataHandler.js 
b/resources/mw.ApiUploadFormDataHandler.js
index eb2ff09..782a551 100644
--- a/resources/mw.ApiUploadFormDataHandler.js
+++ b/resources/mw.ApiUploadFormDataHandler.js
@@ -17,14 +17,30 @@
                        format: 'json'
                };
 
+               upload.on( 'remove-upload', function () {
+                       handler.transport.abort();
+               } );
+
                this.transport = new mw.FormDataTransport(
                        this.$form[0].action,
                        this.formData,
                        this.upload
-               ).on( 'progress', function ( fraction ) {
-                       handler.upload.setTransportProgress( fraction );
+               ).on( 'progress', function ( evt, xhr ) {
+                       var fraction;
+
+                       if ( upload.state === 'aborted' ) {
+                               xhr.abort();
+                               return;
+                       }
+
+                       if ( evt.lengthComputable ) {
+                               fraction = parseFloat( evt.loaded / evt.total );
+                               upload.setTransportProgress( fraction );
+                       }
                } ).on( 'transported', function ( result ) {
-                       handler.upload.setTransported( result );
+                       upload.setTransported( result );
+               } ).on( 'update-stage', function ( stage ) {
+                       upload.ui.setStatus( 'mwe-upwiz-' + stage );
                } );
        };
 
@@ -53,7 +69,7 @@
                                handler.beginTime = ( new Date() ).getTime();
                                handler.upload.ui.setStatus( 
'mwe-upwiz-transport-started' );
                                handler.upload.ui.showTransportProgress();
-                               handler.transport.upload();
+                               handler.transport.upload( handler.upload.file );
                        }
 
                        function err( code, info ) {
diff --git a/resources/mw.FormDataTransport.js 
b/resources/mw.FormDataTransport.js
index 92c00a2..858844e 100644
--- a/resources/mw.FormDataTransport.js
+++ b/resources/mw.FormDataTransport.js
@@ -9,15 +9,14 @@
         * @constructor
         * @param {string} postUrl URL to post to.
         * @param {Object} formData Additional form fields required for upload 
api call
-        * @param {mw.UploadWizardUpload} uploadObject Stupidly included object 
that is controlling the upload details
         */
-       mw.FormDataTransport = function ( postUrl, formData, uploadObject ) {
+       mw.FormDataTransport = function ( postUrl, formData ) {
                var profile = $.client.profile();
 
                oo.EventEmitter.call( this );
 
                this.formData = formData;
-               this.uploadObject = uploadObject;
+               this.aborted = false;
 
                this.postUrl = postUrl;
                // Set chunk size to configured chunk size or max php size,
@@ -43,10 +42,17 @@
 
        FDTP = mw.FormDataTransport.prototype;
 
-       FDTP.upload = function () {
+       FDTP.abort = function () {
+               this.aborted = true;
+
+               if ( this.xhr ) {
+                       this.xhr.abort();
+               }
+       };
+
+       FDTP.upload = function ( file ) {
                var formData,
-                       transport = this,
-                       file = this.uploadObject.file;
+                       transport = this;
 
                // use timestamp + filename to avoid conflicts on server
                this.tempname = ( new Date() ).getTime().toString() + file.name;
@@ -56,7 +62,7 @@
                }).join('');
 
                if ( mw.UploadWizard.config.enableChunked && file.size > 
this.chunkSize ) {
-                       this.uploadChunk(0);
+                       this.uploadChunk( file, 0 );
                } else {
                        this.xhr = new XMLHttpRequest();
                        this.xhr.addEventListener('load', function (evt) {
@@ -67,15 +73,7 @@
                        }, false);
 
                        this.xhr.upload.addEventListener( 'progress', function 
( evt ) {
-                               if ( transport.uploadObject.state === 'aborted' 
) {
-                                       transport.xhr.abort();
-                                       return;
-                               }
-
-                               if ( evt.lengthComputable ) {
-                                       var progress = parseFloat(evt.loaded / 
evt.total );
-                                       transport.emit( 'progress', progress );
-                               }
+                               transport.emit( 'progress', evt );
                        }, false);
                        this.xhr.addEventListener('abort', function (evt) {
                                transport.emitParsedResponse( evt );
@@ -100,13 +98,12 @@
                }
        };
 
-       FDTP.uploadChunk = function ( offset ) {
+       FDTP.uploadChunk = function ( file, offset ) {
                var formData,
                        transport = this,
-                       file = this.uploadObject.file,
                        bytesAvailable = file.size,
                        chunk;
-               if ( this.uploadObject.state === 'aborted' ) {
+               if ( this.aborted ) {
                        if ( this.xhr ) {
                                this.xhr.abort();
                        }
@@ -141,7 +138,7 @@
                                        //reset retry counter
                                        transport.retries = 0;
                                        //start uploading next chunk
-                                       
transport.uploadChunk(response.upload.offset);
+                                       transport.uploadChunk( file, 
response.upload.offset );
                                } else {
                                        //failed to upload, try again in 3 
seconds
                                        transport.retries++;
@@ -152,7 +149,7 @@
                                        } else {
                                                mw.log( 'Retry #' + 
transport.retries + ' on unknown response' );
                                                setTimeout(function () {
-                                                       
transport.uploadChunk(offset);
+                                                       transport.uploadChunk( 
file, offset );
                                                }, 3000);
                                        }
                                }
@@ -167,18 +164,12 @@
                        } else {
                                mw.log( 'Retry #' + transport.retries + ' on 
error event' );
                                setTimeout(function () {
-                                       transport.uploadChunk(offset);
+                                       transport.uploadChunk( file, offset );
                                }, 3000);
                        }
                }, false);
                this.xhr.upload.addEventListener( 'progress', function ( evt ) {
-                       if ( transport.uploadObject.state === 'aborted' ) {
-                               transport.xhr.abort();
-                       }
-                       if ( evt.lengthComputable ) {
-                               var progress = parseFloat( offset + evt.loaded 
) / bytesAvailable;
-                               transport.emit( 'progress', progress );
-                       }
+                       transport.emit( 'progress', evt );
                }, false );
                this.xhr.addEventListener('abort', function (evt) {
                        transport.emitParsedResponse( evt );
@@ -223,9 +214,11 @@
                var transport = this,
                        api = new mw.Api(),
                        params = {};
-               if ( this.uploadObject.state === 'aborted' ) {
+
+               if ( this.aborted ) {
                        return;
                }
+
                if (!this.firstPoll) {
                        this.firstPoll = ( new Date() ).getTime();
                }
@@ -249,10 +242,10 @@
                                                        window.console.log( 
'Unable to check file\'s status' );
                                                } else {
                                                        //Statuses that can be 
returned:
-                                                       // *mwe-upwiz-queued
-                                                       // *mwe-upwiz-publish
-                                                       // *mwe-upwiz-assembling
-                                                       
transport.uploadObject.ui.setStatus( 'mwe-upwiz-' + response.upload.stage );
+                                                       // * queued
+                                                       // * publish
+                                                       // * assembling
+                                                       transport.emit( 
'update-stage' + response.upload.stage );
                                                        setTimeout(function () {
                                                                
transport.checkStatus();
                                                        }, 3000);

-- 
To view, visit https://gerrit.wikimedia.org/r/178241
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic8b76a6fa884e034715d2191add420e549b16880
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/UploadWizard
Gerrit-Branch: master
Gerrit-Owner: MarkTraceur <[email protected]>
Gerrit-Reviewer: Gilles <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to