From 00fb9b72ce57f0719f3d39c70c6b2e98a628a638 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Mon, 13 Jul 2015 20:14:21 +0200 Subject: [PATCH] mediawiki.api.upload: Correct response handling of #uploadWithFormData * Reject instead of resolving when API reports errors, like #uploadWithIframe * Purge bad tokens correctly, like #uploadWithIframe Change-Id: I42fe6f6e921fe29dd96ce5b75ad61014a7346fc9 --- .../src/mediawiki.api/mediawiki.api.upload.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/resources/src/mediawiki.api/mediawiki.api.upload.js b/resources/src/mediawiki.api/mediawiki.api.upload.js index b398f98b86..c2d6989b95 100644 --- a/resources/src/mediawiki.api/mediawiki.api.upload.js +++ b/resources/src/mediawiki.api/mediawiki.api.upload.js @@ -282,7 +282,18 @@ }, false ); xhr.addEventListener( 'load', function ( e ) { - deferred.resolve( parseXHRResponse( e ) ); + var result = parseXHRResponse( e ); + + if ( result.error || result.warnings ) { + if ( result.error && result.error.code === 'badtoken' ) { + api.badToken( 'edit' ); + } + + deferred.reject( result.error || result.warnings ); + } else { + deferred.notify( 1 ); + deferred.resolve( result ); + } }, false ); xhr.addEventListener( 'error', function ( e ) { @@ -295,9 +306,6 @@ this.getEditToken().then( function ( token ) { formData.append( 'token', token ); xhr.send( formData ); - }, function () { - // Mark the edit token as bad, it's been used. - api.badToken( 'edit' ); } ); } else { xhr.send( formData ); -- 2.20.1