jenkins-bot has submitted this change and it was merged.
Change subject: Code cleanups related to deferreds and promises
......................................................................
Code cleanups related to deferreds and promises
* Don't use new with $.Deferred()
* Simplified code where possible with then() and postWithToken().
* No need to call .promise() after .then().
* Fixed some incorrect documentation.
Change-Id: Ifd39d7e3063681363961e3a6125d6ce99b6f6e74
---
M resources/js/ext.translate.base.js
M resources/js/ext.translate.editor.helpers.js
M resources/js/ext.translate.groupselector.js
M resources/js/ext.translate.special.pagemigration.js
M resources/js/ext.translate.special.pagepreparation.js
M resources/js/ext.translate.storage.js
M resources/js/ext.translate.workflowselector.js
M resources/js/jquery.ajaxdispatcher.js
8 files changed, 40 insertions(+), 64 deletions(-)
Approvals:
Krinkle: Looks good to me, approved
jenkins-bot: Verified
diff --git a/resources/js/ext.translate.base.js
b/resources/js/ext.translate.base.js
index 4d409f7..76c8e7d 100644
--- a/resources/js/ext.translate.base.js
+++ b/resources/js/ext.translate.base.js
@@ -53,8 +53,7 @@
* @return {jQuery.Promise} Object containing the requested
properties on success.
*/
getMessageGroup: function ( id, props ) {
- var params,
- deferred = new $.Deferred();
+ var params;
if ( $.isArray( props ) ) {
props = props.join( '|' );
@@ -71,14 +70,9 @@
mgroot: id
};
- new mw.Api()
- .get( params )
- .done( function ( result ) {
- deferred.resolve(
result.query.messagegroups[0] );
- } )
- .fail( deferred.reject );
-
- return deferred.promise();
+ return (new mw.Api()).get( params ).then( function (
result ) {
+ return result.query.messagegroups[0];
+ } );
},
/**
diff --git a/resources/js/ext.translate.editor.helpers.js
b/resources/js/ext.translate.editor.helpers.js
index 9c08552..6a0587d 100644
--- a/resources/js/ext.translate.editor.helpers.js
+++ b/resources/js/ext.translate.editor.helpers.js
@@ -53,10 +53,9 @@
saveDocumentation: function () {
var translateEditor = this,
api = new mw.Api(),
- deferred = new $.Deferred(),
newDocumentation =
translateEditor.$editor.find( '.tux-textarea-documentation' ).val();
- deferred = api.postWithToken( 'edit', {
+ return api.postWithToken( 'edit', {
action: 'edit',
title: translateEditor.message.title
.replace( /\/[a-z\-]+$/, '/' +
mw.config.get( 'wgTranslateDocumentationLanguageCode' ) ),
@@ -85,7 +84,6 @@
mw.notify( 'Error saving message documentation'
);
mw.log( 'Error saving documentation',
errorCode, results );
} );
- return deferred.promise();
},
/**
diff --git a/resources/js/ext.translate.groupselector.js
b/resources/js/ext.translate.groupselector.js
index ab8fbbb..4dfd86f 100644
--- a/resources/js/ext.translate.groupselector.js
+++ b/resources/js/ext.translate.groupselector.js
@@ -393,7 +393,7 @@
/**
* Load message groups and relevant properties using the API.
*
- * @return {jQuery.promise}
+ * @return {jQuery.Promise}
*/
loadGroups: function () {
if ( groupsLoader !== undefined ) {
@@ -422,7 +422,7 @@
/**
* Returns list of recently used message groups by the user.
*
- * @return {jQuery.promise}
+ * @return {jQuery.Promise}
*/
loadRecentGroups: function () {
if ( recentGroupsLoader !== undefined ) {
diff --git a/resources/js/ext.translate.special.pagemigration.js
b/resources/js/ext.translate.special.pagemigration.js
index 7b72bae..3e9d2ce 100644
--- a/resources/js/ext.translate.special.pagemigration.js
+++ b/resources/js/ext.translate.special.pagemigration.js
@@ -12,15 +12,14 @@
function createTranslationPage( i, content ) {
return function () {
- var api = new mw.Api(),
- identifier, title, summary,
- deferred = new $.Deferred();
+ var identifier, title, summary,
+ api = new mw.Api();
identifier = sourceUnits[i].identifier;
title = 'Translations:' + pageName + '/' + identifier +
'/' + langCode;
summary = $( '#pm-summary' ).val();
- deferred = api.postWithToken( 'edit', {
+ return api.postWithToken( 'edit', {
action: 'edit',
format: 'json',
watchlist: 'nochange',
@@ -28,7 +27,6 @@
text: content,
summary: summary,
} );
- return deferred.promise();
};
}
@@ -59,17 +57,17 @@
if ( typeof obj === undefined ) {
// obj was not initialized
errorBox.text( mw.msg(
'pm-page-does-not-exist', pageTitle ) ).show( 'fast' );
- return new $.Deferred().reject();
+ return $.Deferred().reject();
}
if ( obj.revisions === undefined ) {
// the case of /en subpage where first edit is
by FuzzyBot
errorBox.text( mw.msg(
'pm-old-translations-missing', pageTitle ) ).show( 'fast' );
- return new $.Deferred().reject();
+ return $.Deferred().reject();
}
pageContent = obj.revisions[0]['*'];
oldTranslationUnits = pageContent.split( '\n\n' );
return oldTranslationUnits;
- } ).promise();
+ } );
}
/**
@@ -101,12 +99,12 @@
// Page does not exist if missing field is present
if ( obj.missing === '' ) {
errorBox.text( mw.msg(
'pm-page-does-not-exist', pageTitle ) ).show( 'fast' );
- return new $.Deferred().reject();
+ return $.Deferred().reject();
}
// Page exists, but no edit by FuzzyBot
if ( obj.revisions === undefined ) {
errorBox.text( mw.msg(
'pm-old-translations-missing', pageTitle ) ).show( 'fast' );
- return new $.Deferred().reject();
+ return $.Deferred().reject();
} else {
// FB over here refers to FuzzyBot
timestampFB = obj.revisions[0].timestamp;
@@ -116,7 +114,7 @@
mw.log( 'New Timestamp: ' + timestampOld );
return timestampOld;
}
- } ).promise();
+ } );
}
/**
@@ -124,7 +122,7 @@
* @param {string} pageName
* return {jQuery.Promise}
* return {Function} return.done
- * return {Array} return.done.data Array of sUnit Objects
+ * return {Object[]} return.done.data Array of sUnit Objects
*/
function getSourceUnits( pageName ) {
var api = new mw.Api();
@@ -148,7 +146,7 @@
sourceUnits.push( sUnit );
}
return sourceUnits;
- } ).promise();
+ } );
}
/**
diff --git a/resources/js/ext.translate.special.pagepreparation.js
b/resources/js/ext.translate.special.pagepreparation.js
index 58d96cd..4b0f900 100644
--- a/resources/js/ext.translate.special.pagepreparation.js
+++ b/resources/js/ext.translate.special.pagepreparation.js
@@ -5,7 +5,7 @@
* Save the page with a given page name and given content to the wiki.
* @param {string} pageName Page title
* @param {string} pageContent Content of the page to be saved
- * @return {jQuery.promise}
+ * @return {jQuery.Promise}
*/
function savePage( pageName, pageContent ) {
var api = new mw.Api();
@@ -23,7 +23,7 @@
* Get the diff between the current revision and the prepared page
content
* @param {string} pageName Page title
* @param {string} pageContent Content of the page to be saved
- * @return {jQuery.promise}
+ * @return {jQuery.Promise}
* @return {Function} return.done
* @return {string} return.done.data
*/
@@ -45,7 +45,7 @@
}
diff = obj.revisions[0].diff['*'];
return diff;
- } ).promise();
+ } );
}
/**
@@ -127,7 +127,7 @@
/**
* Fetch all the aliases for a given namespace on the wiki.
* @param {integer} namespaceId
- * @return {jQuery.promise}
+ * @return {jQuery.Promise}
* @return {Function} return.done
* @return {Array} return.done.data
*/
@@ -146,19 +146,17 @@
}
}
return aliases;
- } ).promise();
+ } );
}
/**
* Add translate tags around only translatable content for files and
keep everything else
* as a part of the page template.
* @param {string} pageContent
- * @return {string}
+ * @return {jQuery.Promise}
*/
function doFiles( pageContent ) {
- var deferred = new $.Deferred();
-
- $.when( getNamespaceAliases( 6 ) ).then( function ( aliases ) {
+ getNamespaceAliases( 6 ).then( function ( aliases ) {
var aliasList, captionFilesRegex, fileRegex;
aliases.push( 'file' );
@@ -178,9 +176,8 @@
fileRegex = new RegExp( '/\\[\\[((' + aliasList +
')[^\\|]*?)\\]\\]', 'gi' );
pageContent = pageContent.replace( fileRegex,
'\n</translate>[[$1]]\n<translate>' );
- deferred.resolve( pageContent );
+ return pageContent;
} );
- return deferred.promise();
}
/**
@@ -233,7 +230,7 @@
obj = data.query.pages[page];
}
return obj.revisions[0]['*'];
- } ).promise();
+ } );
}
/**
diff --git a/resources/js/ext.translate.storage.js
b/resources/js/ext.translate.storage.js
index 4e7427b..698eb66 100644
--- a/resources/js/ext.translate.storage.js
+++ b/resources/js/ext.translate.storage.js
@@ -21,7 +21,7 @@
* @return {jQuery.Promise}
*/
save: function ( title, translation ) {
- var deferred = (new mw.Api()).postWithToken( 'edit', {
+ return (new mw.Api()).postWithToken( 'edit', {
action: 'edit',
title: title,
text: translation,
@@ -30,8 +30,6 @@
// When undefined, the parameter is not
included in the request
assert: mw.user.isAnon() ? undefined : 'user'
} );
-
- return deferred.promise();
}
};
diff --git a/resources/js/ext.translate.workflowselector.js
b/resources/js/ext.translate.workflowselector.js
index 5911ce0..4ddd555 100644
--- a/resources/js/ext.translate.workflowselector.js
+++ b/resources/js/ext.translate.workflowselector.js
@@ -55,28 +55,19 @@
* @return {jQuery.Promise}
*/
changeState: function ( state ) {
- var instance = this,
- tokenCall, deferred;
+ var token, params,
+ api = new mw.Api();
- deferred = new $.Deferred();
- tokenCall = new mw.Api().get( { action: 'tokens', type:
'groupreview' } );
+ params = {
+ action: 'groupreview',
+ group: this.groupId,
+ language: this.language,
+ state: state,
+ format: 'json'
+ };
+ token = mw.config.get( 'wgTranslateSupportsCsrfToken' )
? 'csrf' : 'groupreview';
- tokenCall.fail( deferred.reject );
- tokenCall.done( function ( result ) {
- var params = {
- action: 'groupreview',
- group: instance.groupId,
- language: instance.language,
- state: state,
- token: result.tokens.groupreviewtoken,
- format: 'json'
- };
- new mw.Api().post( params )
- .done( deferred.resolve )
- .fail( deferred.reject );
- } );
-
- return deferred.promise();
+ return api.postWithToken( token, params );
},
/**
diff --git a/resources/js/jquery.ajaxdispatcher.js
b/resources/js/jquery.ajaxdispatcher.js
index 76b69dc..a49a158 100644
--- a/resources/js/jquery.ajaxdispatcher.js
+++ b/resources/js/jquery.ajaxdispatcher.js
@@ -7,7 +7,7 @@
* @author Niklas Laxström, 2014
*
* @param {callable[]} list List of callbacks returning promises.
- * @return {jQuery.promise}
+ * @return {jQuery.Promise}
*/
function ajaxDispatcher( list, maxRetries ) {
maxRetries = maxRetries || 0;
--
To view, visit https://gerrit.wikimedia.org/r/178032
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ifd39d7e3063681363961e3a6125d6ce99b6f6e74
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits