From: Timo Tijhof Date: Wed, 11 Feb 2015 04:08:49 +0000 (+0000) Subject: mediawiki.api.login: Chain then() instead of Deferred wrapping X-Git-Tag: 1.31.0-rc.0~12435^2~1 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/banques/ajouter.php?a=commitdiff_plain;h=50b3aa05a1400a50c245fc10f3ee74749d094ceb;p=lhc%2Fweb%2Fwiklou.git mediawiki.api.login: Chain then() instead of Deferred wrapping No need to wrap a promise and manually forwarding fail(). Using "then()" does this by default. Remove redundant 'data.login' assertion. API errors are already handled at this point. Handle login error before success to allow a clean function exit. Change-Id: I032226b1e2b362c61eb2c6de0c7f5ebe2ed25b7e --- diff --git a/resources/src/mediawiki.api/mediawiki.api.login.js b/resources/src/mediawiki.api/mediawiki.api.login.js index ccbae06c79..88c8caa737 100644 --- a/resources/src/mediawiki.api/mediawiki.api.login.js +++ b/resources/src/mediawiki.api/mediawiki.api.login.js @@ -14,8 +14,7 @@ * @return {jQuery.Promise} See mw.Api#post */ login: function ( username, password ) { - var params, request, - deferred = $.Deferred(), + var params, apiPromise, api = this; params = { @@ -24,25 +23,22 @@ lgpassword: password }; - request = api.post( params ); - request.fail( deferred.reject ); - request.done( function ( data ) { - params.lgtoken = data.login.token; - api.post( params ) - .fail( deferred.reject ) - .done( function ( data ) { - var code; - if ( data.login && data.login.result === 'Success' ) { - deferred.resolve( data ); - } else { - // Set proper error code whenever possible - code = data.error && data.error.code || 'unknown'; - deferred.reject( code, data ); - } - } ); - } ); - - return deferred.promise( { abort: request.abort } ); + apiPromise = api.post( params ); + return apiPromise + .then( function ( data ) { + params.lgtoken = data.login.token; + return api.post( params ) + .then( function ( data ) { + var code; + if ( data.login.result !== 'Success' ) { + // Set proper error code whenever possible + code = data.error && data.error.code || 'unknown'; + return $.Deferred().reject( code, data ); + } + return data; + } ); + } ) + .promise( { abort: apiPromise.abort } ); } } );