From: Bartosz DziewoƄski Date: Mon, 13 Jul 2015 18:14:21 +0000 (+0200) Subject: mediawiki.api.upload: Correct response handling of #uploadWithFormData X-Git-Tag: 1.31.0-rc.0~10752 X-Git-Url: http://git.cyclocoop.org/%27.parametre_url%28%20%20%20generer_action_auteur%28%27charger_plugin%27%2C%20%27update_flux%27%29%2C%27update_flux%27%2C%20%27oui%27%29.%27?a=commitdiff_plain;h=00fb9b72ce57f0719f3d39c70c6b2e98a628a638;p=lhc%2Fweb%2Fwiklou.git 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 --- 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 );