mediawiki.api.upload: Improve error handling when using #uploadToStash
authorBartosz Dziewoński <matma.rex@gmail.com>
Mon, 24 Aug 2015 19:53:06 +0000 (21:53 +0200)
committerBartosz Dziewoński <matma.rex@gmail.com>
Mon, 24 Aug 2015 20:39:55 +0000 (22:39 +0200)
The finishUpload() function did not check for errors previously, which
caused errors that only surface at this point (e.g. invalid file name)
to be ignored.

Change-Id: I61a1e6bb93b6db34e875689c5d769a1b7e4db0be

resources/src/mediawiki.api/mediawiki.api.upload.js
resources/src/mediawiki/mediawiki.Upload.Dialog.js

index 8f19a3b..d05ba57 100644 (file)
                                        return $.Deferred().reject( 'Filename not included in file data.' );
                                }
 
-                               return api.postWithEditToken( data );
+                               return api.postWithEditToken( data ).then( function ( result ) {
+                                       if ( result.upload && ( result.upload.error || result.upload.warnings ) ) {
+                                               return $.Deferred().reject( result.upload.error || result.upload.warnings ).promise();
+                                       }
+                                       return result;
+                               } );
                        }
 
                        return this.upload( file, { stash: true, filename: data.filename } ).then( function ( result ) {
index 3c10eeb..96db7cc 100644 (file)
                                return false;
                        }
 
-                       dialog.upload.finishStashUpload().then( function () {
+                       dialog.upload.finishStashUpload().always( function () {
                                var name;
 
                                if ( dialog.upload.getState() === mw.Upload.State.ERROR ) {