jenkins-bot has submitted this change and it was merged.
Change subject: mediawiki.api.user: New module, factored out of mediawiki.user
......................................................................
mediawiki.api.user: New module, factored out of mediawiki.user
The convenient getUserInfo() function can now be used with mw.ForeignApi.
Bug: T117868
Change-Id: Ic0b5fe3812723bf51a5cf6600437c480dc5abb8f
---
M resources/Resources.php
A resources/src/mediawiki/api/user.js
M resources/src/mediawiki/mediawiki.user.js
3 files changed, 58 insertions(+), 28 deletions(-)
Approvals:
MarkTraceur: Looks good to me, approved
jenkins-bot: Verified
diff --git a/resources/Resources.php b/resources/Resources.php
index 3955651..fce4383 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -906,6 +906,13 @@
'json',
),
),
+ 'mediawiki.api.user' => array(
+ 'scripts' => 'resources/src/mediawiki/api/user.js',
+ 'dependencies' => array(
+ 'mediawiki.api',
+ ),
+ 'targets' => array( 'desktop', 'mobile' ),
+ ),
'mediawiki.api.watch' => array(
'scripts' => 'resources/src/mediawiki/api/watch.js',
'dependencies' => array(
@@ -1313,6 +1320,7 @@
'dependencies' => array(
'mediawiki.cookie',
'mediawiki.api',
+ 'mediawiki.api.user',
'user.options',
'user.tokens',
),
diff --git a/resources/src/mediawiki/api/user.js
b/resources/src/mediawiki/api/user.js
new file mode 100644
index 0000000..e7b4b6d
--- /dev/null
+++ b/resources/src/mediawiki/api/user.js
@@ -0,0 +1,37 @@
+/**
+ * @class mw.Api.plugin.user
+ * @since 1.27
+ */
+( function ( mw, $ ) {
+
+ $.extend( mw.Api.prototype, {
+
+ /**
+ * Get the current user's groups and rights.
+ *
+ * @return {jQuery.Promise}
+ * @return {Function} return.done
+ * @return {Object} return.done.userInfo
+ * @return {string[]} return.done.userInfo.groups User groups
that the current user belongs to
+ * @return {string[]} return.done.userInfo.rights Current
user's rights
+ */
+ getUserInfo: function () {
+ return this.get( {
+ action: 'query',
+ meta: 'userinfo',
+ uiprop: [ 'groups', 'rights' ]
+ } ).then( function ( data ) {
+ if ( data.query && data.query.userinfo ) {
+ return data.query.userinfo;
+ }
+ return $.Deferred().reject().promise();
+ } );
+ }
+ } );
+
+ /**
+ * @class mw.Api
+ * @mixins mw.Api.plugin.user
+ */
+
+}( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki/mediawiki.user.js
b/resources/src/mediawiki/mediawiki.user.js
index b4baa66..d2f2abd 100644
--- a/resources/src/mediawiki/mediawiki.user.js
+++ b/resources/src/mediawiki/mediawiki.user.js
@@ -4,41 +4,20 @@
*/
( function ( mw, $ ) {
var i,
- deferreds = {},
+ userInfoPromise,
byteToHex = [];
/**
* Get the current user's groups or rights
*
* @private
- * @param {string} info One of 'groups' or 'rights'
* @return {jQuery.Promise}
*/
- function getUserInfo( info ) {
- var api;
- if ( !deferreds[ info ] ) {
-
- deferreds.rights = $.Deferred();
- deferreds.groups = $.Deferred();
-
- api = new mw.Api();
- api.get( {
- action: 'query',
- meta: 'userinfo',
- uiprop: 'rights|groups'
- } ).always( function ( data ) {
- var rights, groups;
- if ( data.query && data.query.userinfo ) {
- rights = data.query.userinfo.rights;
- groups = data.query.userinfo.groups;
- }
- deferreds.rights.resolve( rights || [] );
- deferreds.groups.resolve( groups || [] );
- } );
-
+ function getUserInfo() {
+ if ( !userInfoPromise ) {
+ userInfoPromise = new mw.Api().getUserInfo();
}
-
- return deferreds[ info ].promise();
+ return userInfoPromise;
}
// Map from numbers 0-255 to a hex string (with padding)
@@ -262,7 +241,10 @@
* @return {jQuery.Promise}
*/
getGroups: function ( callback ) {
- return getUserInfo( 'groups' ).done( callback );
+ return getUserInfo().then(
+ function ( userInfo ) { return userInfo.groups;
},
+ function () { return []; }
+ ).done( callback );
},
/**
@@ -272,7 +254,10 @@
* @return {jQuery.Promise}
*/
getRights: function ( callback ) {
- return getUserInfo( 'rights' ).done( callback );
+ return getUserInfo().then(
+ function ( userInfo ) { return userInfo.rights;
},
+ function () { return []; }
+ ).done( callback );
}
} );
--
To view, visit https://gerrit.wikimedia.org/r/257668
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic0b5fe3812723bf51a5cf6600437c480dc5abb8f
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Edokter <[email protected]>
Gerrit-Reviewer: Jack Phoenix <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: MarkTraceur <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits