jenkins-bot has submitted this change and it was merged.
Change subject: mediawiki.api: Add xhr.abort method to promise object
......................................................................
mediawiki.api: Add xhr.abort method to promise object
jQuery.ajax does the same internally to extend the promise.
Change-Id: I3a8ae7a4c92dda5038cf7722ebd1d41dab0a7ef9
---
M resources/mediawiki.api/mediawiki.api.category.js
M resources/mediawiki.api/mediawiki.api.edit.js
M resources/mediawiki.api/mediawiki.api.js
M resources/mediawiki.api/mediawiki.api.parse.js
M resources/mediawiki.api/mediawiki.api.watch.js
5 files changed, 31 insertions(+), 23 deletions(-)
Approvals:
Krinkle: Looks good to me, approved
jenkins-bot: Verified
diff --git a/resources/mediawiki.api/mediawiki.api.category.js
b/resources/mediawiki.api/mediawiki.api.category.js
index 4de5291..8bba1fc 100644
--- a/resources/mediawiki.api/mediawiki.api.category.js
+++ b/resources/mediawiki.api/mediawiki.api.category.js
@@ -14,12 +14,13 @@
* @return {boolean} return.done.isCategory Whether the
category exists.
*/
isCategory: function ( title, ok, err ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
- this.get( {
+ apiPromise = this.get( {
prop: 'categoryinfo',
titles: title.toString()
} )
@@ -36,7 +37,7 @@
})
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
},
/**
@@ -50,13 +51,14 @@
* @return {String[]} return.done.categories Matched categories
*/
getCategoriesByPrefix: function ( prefix, ok, err ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
// Fetch with allpages to only get categories that have
a corresponding description page.
- this.get( {
+ apiPromise = this.get( {
list: 'allpages',
apprefix: prefix,
apnamespace:
mw.config.get('wgNamespaceIds').category
@@ -72,7 +74,7 @@
})
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
},
@@ -88,12 +90,13 @@
* if title was not found.
*/
getCategories: function ( title, ok, err, async ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
- this.get( {
+ apiPromise = this.get( {
prop: 'categories',
titles: title.toString()
}, {
@@ -114,10 +117,10 @@
} );
}
d.resolve( ret );
- })
+ } )
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
}
} );
diff --git a/resources/mediawiki.api/mediawiki.api.edit.js
b/resources/mediawiki.api/mediawiki.api.edit.js
index 3c775ad..2cd1b92 100644
--- a/resources/mediawiki.api/mediawiki.api.edit.js
+++ b/resources/mediawiki.api/mediawiki.api.edit.js
@@ -57,12 +57,13 @@
* @return {string} return.done.token Received token.
*/
getEditToken: function ( ok, err ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
- this.get( {
+ apiPromise = this.get( {
action: 'tokens',
type: 'edit'
}, {
@@ -87,7 +88,7 @@
})
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
},
/**
diff --git a/resources/mediawiki.api/mediawiki.api.js
b/resources/mediawiki.api/mediawiki.api.js
index cf7443f..142c454 100644
--- a/resources/mediawiki.api/mediawiki.api.js
+++ b/resources/mediawiki.api/mediawiki.api.js
@@ -115,7 +115,8 @@
*/
ajax: function ( parameters, ajaxOptions ) {
var token,
- apiDeferred = $.Deferred();
+ apiDeferred = $.Deferred(),
+ xhr;
parameters = $.extend( {}, this.defaults.parameters,
parameters );
ajaxOptions = $.extend( {}, this.defaults.ajax,
ajaxOptions );
@@ -147,7 +148,7 @@
}
// Make the AJAX request
- $.ajax( ajaxOptions )
+ xhr = $.ajax( ajaxOptions )
// If AJAX fails, reject API call with error
code 'http'
// and details in second argument.
.fail( function ( xhr, textStatus, exception ) {
@@ -172,9 +173,9 @@
} );
// Return the Promise
- return apiDeferred.promise().fail( function ( code,
details ) {
+ return apiDeferred.promise( { abort: xhr.abort }
).fail( function ( code, details ) {
mw.log( 'mw.Api error: ', code, details );
- });
+ } );
}
};
diff --git a/resources/mediawiki.api/mediawiki.api.parse.js
b/resources/mediawiki.api/mediawiki.api.parse.js
index ea0388c..4044655 100644
--- a/resources/mediawiki.api/mediawiki.api.parse.js
+++ b/resources/mediawiki.api/mediawiki.api.parse.js
@@ -15,12 +15,13 @@
* @return {string} return.done.data Parsed HTML of `wikitext`.
*/
parse: function ( wikitext, ok, err ) {
- var d = $.Deferred();
+ var d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
- this.get( {
+ apiPromise = this.get( {
action: 'parse',
text: wikitext
} )
@@ -31,7 +32,7 @@
} )
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
}
} );
diff --git a/resources/mediawiki.api/mediawiki.api.watch.js
b/resources/mediawiki.api/mediawiki.api.watch.js
index c86a90a..e2be5c7 100644
--- a/resources/mediawiki.api/mediawiki.api.watch.js
+++ b/resources/mediawiki.api/mediawiki.api.watch.js
@@ -19,7 +19,9 @@
* @return {string} return.done.watch.message Parsed HTML of the
confirmational interface message
*/
function doWatchInternal( page, ok, err, addParams ) {
- var params, d = $.Deferred();
+ var params,
+ d = $.Deferred(),
+ apiPromise;
// Backwards compatibility (< MW 1.20)
d.done( ok );
d.fail( err );
@@ -35,13 +37,13 @@
$.extend( params, addParams );
}
- this.post( params )
+ apiPromise = this.post( params )
.done( function ( data ) {
d.resolve( data.watch );
} )
.fail( d.reject );
- return d.promise();
+ return d.promise( { abort: apiPromise.abort } );
}
$.extend( mw.Api.prototype, {
--
To view, visit https://gerrit.wikimedia.org/r/56323
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I3a8ae7a4c92dda5038cf7722ebd1d41dab0a7ef9
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits