mediawiki.user: Use wgUserGroups for getGroups() rather than AJAX
authorMatthew Flaschen <mflaschen@wikimedia.org>
Thu, 31 Mar 2016 20:50:28 +0000 (16:50 -0400)
committerKrinkle <krinklemail@gmail.com>
Sat, 2 Apr 2016 20:59:15 +0000 (20:59 +0000)
Use wgUserGroups to implement getGroups, rather than an API request.

wgUserGroups and ApiQueryUserInfo both use $user->getEffectiveGroups()
unprocessed.

mw.Api.plugin.user is still useful because rights are not available
client-side, and it can be used for groups with ForeignApi.

Change-Id: Id9c7805de1d02e267dbd2bba833e90a6df117dee

resources/src/mediawiki/mediawiki.user.js
tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js

index d2f2abd..0fdd9aa 100644 (file)
                 * @return {jQuery.Promise}
                 */
                getGroups: function ( callback ) {
-                       return getUserInfo().then(
-                               function ( userInfo ) { return userInfo.groups; },
-                               function () { return []; }
-                       ).done( callback );
+                       var userGroups = mw.config.get( 'wgUserGroups', [] );
+
+                       // Uses promise for backwards compatibility
+                       return $.Deferred().resolve( userGroups ).done( callback );
                },
 
                /**
index 04e002d..3332c08 100644 (file)
@@ -41,6 +41,8 @@
        } );
 
        QUnit.test( 'getUserInfos', 3, function ( assert ) {
+               mw.config.set( 'wgUserGroups', [ '*', 'user' ] );
+
                mw.user.getGroups( function ( groups ) {
                        assert.deepEqual( groups, [ '*', 'user' ], 'Result' );
                } );
@@ -55,7 +57,7 @@
 
                this.server.respondWith( /meta=userinfo/, function ( request ) {
                        request.respond( 200, { 'Content-Type': 'application/json' },
-                               '{ "query": { "userinfo": { "groups": [ "*", "user" ], "rights": [ "read", "edit", "createtalk" ] } } }'
+                               '{ "query": { "userinfo": { "groups": [ "unused" ], "rights": [ "read", "edit", "createtalk" ] } } }'
                        );
                } );