Phuedx has uploaded a new change for review.

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

Change subject: Make getWikiGrokVersion promise-based
......................................................................

Make getWikiGrokVersion promise-based

Change-Id: Ib5f3eee3709cf23d7782a0974b93576e28d0d8c3
---
M javascripts/modules/wikigrok/init.js
1 file changed, 41 insertions(+), 38 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend 
refs/changes/73/177773/1

diff --git a/javascripts/modules/wikigrok/init.js 
b/javascripts/modules/wikigrok/init.js
index 1f2ee0a..bf81b3c 100644
--- a/javascripts/modules/wikigrok/init.js
+++ b/javascripts/modules/wikigrok/init.js
@@ -17,7 +17,6 @@
                                name: 'b'
                        }
                },
-               versionConfig,
                WikiGrokAbTest = M.require( 'WikiGrokAbTest' ),
                wikiGrokUser = M.require( 'wikiGrokUser' );
 
@@ -47,12 +46,13 @@
         * If the user is eligible to enter the WikiGrok AB test, then the test
         * determines which version to use.
         *
-        * @return {Object|null}
+        * @return {jQuery.Promise}
         */
        function getWikiGrokConfig() {
                var versionOverride,
                        versionConfig = null,
-                       wikiGrokAbTest = WikiGrokAbTest.newFromMwConfig();
+                       wikiGrokAbTest = WikiGrokAbTest.newFromMwConfig(),
+                       deferred = $.Deferred();
 
                // See if there is a query string override
                if ( M.query.wikigrokversion ) {
@@ -66,10 +66,10 @@
                        versionConfig = 
versionConfigs[wikiGrokAbTest.getVersion( wikiGrokUser )];
                }
 
-               return versionConfig;
-       }
+               deferred.resolve( versionConfig );
 
-       versionConfig = getWikiGrokConfig();
+               return deferred.promise();
+       }
 
        // Allow query string override for testing, for example, 
'?wikidataid=Q508703'
        if ( !wikidataID ) {
@@ -86,8 +86,6 @@
                // User hasn't already contributed through WikiGrok on this 
page before or they
                // are testing WikiGrok (by using the query string override)
                ( !hasUserAlreadyContributedToWikiGrok() || idOverride ) &&
-               // WikiGrok is enabled and configured for this user
-               versionConfig &&
                // We're not on the Main Page
                !mw.config.get( 'wgIsMainPage' ) &&
                // Permitted on this device
@@ -99,38 +97,43 @@
                // We're in Main namespace,
                mw.config.get( 'wgNamespaceNumber' ) === 0
        ) {
+               getWikiGrokConfig().done( function ( versionConfig ) {
 
-               // Load the required module and view based on the version for 
the user
-               mw.loader.using( versionConfig.module ).done( function () {
-                       var WikiGrokDialog = M.require( versionConfig.view ),
-                               page = M.getCurrentPage(),
-                               // Initialize the dialog and insert it into the 
page (but don't display yet)
-                               dialog = new WikiGrokDialog( {
-                                       itemId: wikidataID,
-                                       title: mw.config.get( 'wgTitle' ),
-                                       userToken: wikiGrokUser.getToken(),
-                                       testing: ( idOverride ) ? true : false
+                       // Load the required module and view based on the 
version for the user
+                       mw.loader.using( versionConfig.module ).done( function 
() {
+                               // Load the required module and view based on 
the version for the user
+                               mw.loader.using( versionConfig.module ).done( 
function () {
+                                       var WikiGrokDialog = M.require( 
versionConfig.view ),
+                                               page = M.getCurrentPage(),
+                                               // Initialize the dialog and 
insert it into the page (but don't display yet)
+                                               dialog = new WikiGrokDialog( {
+                                                       itemId: wikidataID,
+                                                       title: mw.config.get( 
'wgTitle' ),
+                                                       userToken: 
wikiGrokUser.getToken(),
+                                                       testing: ( idOverride ) 
? true : false
+                                               } );
+
+                                       // FIXME: If the table of contents code 
is not loaded the dialog will still
+                                       //   get added to the end of the lead 
section.
+                                       if ( $( '.toc-mobile' ).length ) {
+                                               dialog.insertBefore( 
'.toc-mobile' );
+                                       } else {
+                                               dialog.appendTo( 
page.getLeadSectionElement() );
+                                       }
+                               } ).fail( function () {
+                                       var data = {
+                                               error: 
'no-impression-cannot-load-interface',
+                                               taskType: 'version ' + 
versionConfig.name,
+                                               taskToken: 
mw.user.generateRandomSessionId(),
+                                               userToken: 
wikiGrokUser.getToken(),
+                                               isLoggedIn: 
!wikiGrokUser.isAnon()
+                                       };
+                                       if ( idOverride ) {
+                                               data.testing = true;
+                                       }
+                                       errorSchema.log( data );
                                } );
-
-                       // FIXME: If the table of contents code is not loaded 
the dialog will still
-                       //   get added to the end of the lead section.
-                       if ( $( '.toc-mobile' ).length ) {
-                               dialog.insertBefore( '.toc-mobile' );
-                       } else {
-                               dialog.appendTo( page.getLeadSectionElement() );
-                       }
-               } ).fail( function () {
-                       var data = {
-                               error: 'no-impression-cannot-load-interface',
-                               taskType: 'version ' + versionConfig.name,
-                               taskToken: mw.user.generateRandomSessionId(),
-                               userToken: wikiGrokUser.getToken(),
-                               isLoggedIn: !wikiGrokUser.isAnon()
-                       };
-                       if ( idOverride ) {
-                               data.testing = true;
-                       }
-                       errorSchema.log( data );
+                       } );
                } );
 
                // Make OverlayManager handle '#/wikigrok/about' links.

-- 
To view, visit https://gerrit.wikimedia.org/r/177773
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib5f3eee3709cf23d7782a0974b93576e28d0d8c3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Phuedx <[email protected]>

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

Reply via email to