Alex Monk has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/56323


Change subject: Allow JS API callers to abort requests
......................................................................

Allow JS API callers to abort requests

I'd like to use this for I006ffbe7

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, 16 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/23/56323/1

diff --git a/resources/mediawiki.api/mediawiki.api.category.js 
b/resources/mediawiki.api/mediawiki.api.category.js
index 4de5291..5ed27a5 100644
--- a/resources/mediawiki.api/mediawiki.api.category.js
+++ b/resources/mediawiki.api/mediawiki.api.category.js
@@ -19,7 +19,7 @@
                        d.done( ok );
                        d.fail( err );
 
-                       this.get( {
+                       var apiPromise = this.get( {
                                        prop: 'categoryinfo',
                                        titles: title.toString()
                                } )
@@ -36,7 +36,7 @@
                                })
                                .fail( d.reject );
 
-                       return d.promise();
+                       return d.promise( { abort: apiPromise.abort } );
                },
 
                /**
@@ -56,7 +56,7 @@
                        d.fail( err );
 
                        // Fetch with allpages to only get categories that have 
a corresponding description page.
-                       this.get( {
+                       var apiPromise = this.get( {
                                        list: 'allpages',
                                        apprefix: prefix,
                                        apnamespace: 
mw.config.get('wgNamespaceIds').category
@@ -72,7 +72,7 @@
                                })
                                .fail( d.reject );
 
-                       return d.promise();
+                       return d.promise( { abort: apiPromise.abort } );
                },
 
 
@@ -93,7 +93,7 @@
                        d.done( ok );
                        d.fail( err );
 
-                       this.get( {
+                       var apiPromise = this.get( {
                                        prop: 'categories',
                                        titles: title.toString()
                                }, {
@@ -114,10 +114,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..c0d6a51 100644
--- a/resources/mediawiki.api/mediawiki.api.edit.js
+++ b/resources/mediawiki.api/mediawiki.api.edit.js
@@ -62,7 +62,7 @@
                        d.done( ok );
                        d.fail( err );
 
-                       this.get( {
+                       var apiPromise = this.get( {
                                        action: 'tokens',
                                        type: 'edit'
                                }, {
@@ -87,7 +87,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..d72f081 100644
--- a/resources/mediawiki.api/mediawiki.api.js
+++ b/resources/mediawiki.api/mediawiki.api.js
@@ -147,7 +147,7 @@
                        }
 
                        // Make the AJAX request
-                       $.ajax( ajaxOptions )
+                       var 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 +172,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..7f2a0d1 100644
--- a/resources/mediawiki.api/mediawiki.api.parse.js
+++ b/resources/mediawiki.api/mediawiki.api.parse.js
@@ -20,7 +20,7 @@
                        d.done( ok );
                        d.fail( err );
 
-                       this.get( {
+                       var apiPromise = this.get( {
                                        action: 'parse',
                                        text: wikitext
                                } )
@@ -31,7 +31,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..1317e74 100644
--- a/resources/mediawiki.api/mediawiki.api.watch.js
+++ b/resources/mediawiki.api/mediawiki.api.watch.js
@@ -35,13 +35,13 @@
                        $.extend( params, addParams );
                }
 
-               this.post( params )
+               var 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: newchange
Gerrit-Change-Id: I3a8ae7a4c92dda5038cf7722ebd1d41dab0a7ef9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to