Bmansurov has uploaded a new change for review.

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

Change subject: Hygiene: make MobileWebWatching schema inherit from 
mw.eventLog.Schema
......................................................................

Hygiene: make MobileWebWatching schema inherit from mw.eventLog.Schema

Also load the schema file only when needed and not bundle it with
other schema files.

Bug: T122504
Change-Id: I9de14489a88e757d44fd396389f416ba7c7cc8ac
---
M extension.json
M includes/MobileFrontend.hooks.php
D resources/mobile.loggingSchemas/SchemaMobileWebWatching.js
A resources/mobile.loggingSchemas/schemaMobileWebWatching.js
M resources/mobile.watchstar/Watchstar.js
5 files changed, 63 insertions(+), 46 deletions(-)


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

diff --git a/extension.json b/extension.json
index a96e1d5..18a140d 100644
--- a/extension.json
+++ b/extension.json
@@ -1155,7 +1155,7 @@
                                "mobile.drawers",
                                "mobile.ajax",
                                "mobile.toast",
-                               "mobile.loggingSchemas"
+                               "mobile.loggingSchemas.mobileWebWatching"
                        ],
                        "scripts": [
                                
"resources/mobile.watchstar/WatchstarGateway.js",
diff --git a/includes/MobileFrontend.hooks.php 
b/includes/MobileFrontend.hooks.php
index cb5cbac..767c3c7 100644
--- a/includes/MobileFrontend.hooks.php
+++ b/includes/MobileFrontend.hooks.php
@@ -1131,7 +1131,6 @@
                        'MobileWebMainMenuClickTracking' => 11568715,
                        'MobileWebSearch' => 12054448,
                        'MobileWebUIClickTracking' => 10742159,
-                       'MobileWebWatching' => 11761466,
                        'MobileWebWatchlistClickTracking' => 10720361,
                );
        }
@@ -1152,6 +1151,8 @@
         */
        public static function onEventLoggingRegisterSchemas( &$schemas ) {
                $schemas += self::getEventLoggingSchemas();
+               // eventually we'll get rid of the getEventLoggingSchemas 
function, FIXME: remove this comment when we do
+               $schemas['MobileWebWatching'] = 11761466;
                // FIXME: should we not register the Edit schema reversion here?
                // https://meta.wikimedia.org/wiki/Schema:Edit
                return true;
@@ -1175,12 +1176,12 @@
                        
'resources/mobile.loggingSchemas/SchemaMobileWebClickTracking.js',
                        
'resources/mobile.loggingSchemas/schemaMobileWebLanguageSwitcher.js',
                        
'resources/mobile.loggingSchemas/SchemaMobileWebUIClickTracking.js',
-                       
'resources/mobile.loggingSchemas/SchemaMobileWebWatching.js',
                        
'resources/mobile.loggingSchemas/SchemaMobileWebSearch.js',
                );
 
                $schemaModules = array();
                $schemaEdit = $mfResourceFileModuleBoilerplate;
+               $schemaMobileWebWatching = $mfResourceFileModuleBoilerplate;
 
                if ( class_exists( 'EventLogging' ) ) {
                        $schemaModules = array_map(
@@ -1199,6 +1200,17 @@
                                        
'resources/mobile.loggingSchemas/schemaEdit.js',
                                )
                        );
+
+                       $schemaMobileWebWatching += array(
+                               'dependencies' => array(
+                                       'ext.eventLogging.subscriber',
+                                       'mobile.user',
+                                       'mobile.context'
+                               ),
+                               'scripts' => array(
+                                       
'resources/mobile.loggingSchemas/schemaMobileWebWatching.js',
+                               )
+                       );
                }
 
                $loggingSchemasModule = $mfResourceFileModuleBoilerplate + 
array(
@@ -1213,6 +1225,7 @@
 
                $resourceLoader->register( array( 'mobile.loggingSchemas' => 
$loggingSchemasModule ) );
                $resourceLoader->register( array( 'mobile.loggingSchemas.edit' 
=> $schemaEdit ) );
+               $resourceLoader->register( array( 
'mobile.loggingSchemas.mobileWebWatching' => $schemaMobileWebWatching ) );
        }
 
        /**
diff --git a/resources/mobile.loggingSchemas/SchemaMobileWebWatching.js 
b/resources/mobile.loggingSchemas/SchemaMobileWebWatching.js
deleted file mode 100644
index aed543a..0000000
--- a/resources/mobile.loggingSchemas/SchemaMobileWebWatching.js
+++ /dev/null
@@ -1,33 +0,0 @@
-( function ( M, $ ) {
-       var user = M.require( 'mobile.user/user' ),
-               SchemaMobileWeb = M.require( 
'mobile.loggingSchemas/SchemaMobileWeb' );
-
-       /**
-        * @class SchemaMobileWebWatching
-        * @extends Schema
-        */
-       function SchemaMobileWebWatching() {
-               SchemaMobileWeb.apply( this, arguments );
-       }
-       OO.mfExtend( SchemaMobileWebWatching, SchemaMobileWeb, {
-               /** @inheritdoc **/
-               name: 'MobileWebWatching',
-               /**
-                * @inheritdoc
-                *
-                * @cfg {Object} defaults Default options hash.
-                * @cfg {Number} defaults.userId The id of the user performing 
the action
-                * @cfg {Boolean} defaults.isWatched whether the page is 
currently watched or not
-                * @cfg {String} defaults.funnel the funnel from which the user 
is watching
-                */
-               defaults: $.extend( {}, SchemaMobileWeb.prototype.defaults, {
-                       userId: mw.user.getId(),
-                       isWatched: undefined,
-                       funnel: undefined,
-                       userEditCount: user.getEditCount()
-               } )
-       } );
-
-       M.define( 'mobile.loggingSchemas/SchemaMobileWebWatching', 
SchemaMobileWebWatching );
-
-} )( mw.mobileFrontend, jQuery );
diff --git a/resources/mobile.loggingSchemas/schemaMobileWebWatching.js 
b/resources/mobile.loggingSchemas/schemaMobileWebWatching.js
new file mode 100644
index 0000000..c381da3
--- /dev/null
+++ b/resources/mobile.loggingSchemas/schemaMobileWebWatching.js
@@ -0,0 +1,33 @@
+( function ( M ) {
+       var user = M.require( 'mobile.user/user' ),
+               context = M.require( 'mobile.context/context' ),
+               /**
+                * MobileWebWatching schema
+                * https://meta.wikimedia.org/wiki/Schema:MobileWebWatching
+                *
+                * @class MobileWebWatching
+                * @singleton
+                */
+               schemaMobileWebWatching = new mw.eventLog.Schema(
+                       'MobileWebWatching',
+                       1,
+                       /**
+                        * @cfg {Object} defaults Default options hash
+                        * @cfg {String} defaults.mobileMode whether user is in 
stable or beta
+                        * @cfg {Number} defaults.userId The id of the user 
performing the action
+                        * @cfg {Boolean} defaults.isWatched whether the page 
is currently watched or not
+                        * @cfg {String} defaults.funnel the funnel from which 
the user is watching
+                        * @cfg {Number} the edit count of the current user on 
the current wiki
+                        */
+                       {
+                               mobileMode: context.getMode(),
+                               userId: mw.user.getId(),
+                               isWatched: undefined,
+                               funnel: undefined,
+                               userEditCount: user.getEditCount()
+                       }
+               );
+
+       M.define( 
'mobile.loggingSchemas.mobileWebWatching/schemaMobileWebWatching', 
schemaMobileWebWatching );
+
+} )( mw.mobileFrontend );
diff --git a/resources/mobile.watchstar/Watchstar.js 
b/resources/mobile.watchstar/Watchstar.js
index 87622e6..95652cf 100644
--- a/resources/mobile.watchstar/Watchstar.js
+++ b/resources/mobile.watchstar/Watchstar.js
@@ -1,7 +1,7 @@
 ( function ( M ) {
 
        var View = M.require( 'mobile.view/View' ),
-               SchemaMobileWebWatching = M.require( 
'mobile.loggingSchemas/SchemaMobileWebWatching' ),
+               schemaMobileWebWatching,
                WatchstarGateway = M.require( 
'mobile.watchstar/WatchstarGateway' ),
                Icon = M.require( 'mobile.startup/Icon' ),
                watchIcon = new Icon( {
@@ -15,6 +15,10 @@
                toast = M.require( 'mobile.toast/toast' ),
                user = M.require( 'mobile.user/user' ),
                CtaDrawer = M.require( 'mobile.drawers/CtaDrawer' );
+
+       if ( mw.eventLog ) {
+               schemaMobileWebWatching = M.require( 
'mobile.loggingSchemas.mobileWebWatching/schemaMobileWebWatching' );
+       }
 
        /**
         * A clickable watchstar
@@ -45,9 +49,7 @@
                        this.gateway.setWatchedPage( options.page, 
options.isWatched );
                        _super.call( self, options );
                }
-               this.schema = new SchemaMobileWebWatching( {
-                       funnel: options.funnel
-               } );
+               this.schema = schemaMobileWebWatching;
        }
 
        OO.mfExtend( Watchstar, View, {
@@ -86,6 +88,7 @@
                tagName: 'div',
                className: watchIcon.getClassName(),
                template: mw.template.compile( '<button>{{tooltip}}</button>', 
'hogan' ),
+               // FIXME: this is a merge fail. The initialize function should 
be removed as its contents are already present above
                /** @inheritdoc */
                initialize: function ( options ) {
                        var self = this,
@@ -107,9 +110,7 @@
                                this.gateway.setWatchedPage( options.page, 
options.isWatched );
                                _super.call( self, options );
                        }
-                       this.schema = new SchemaMobileWebWatching( {
-                               funnel: options.funnel
-                       } );
+                       this.schema = schemaMobileWebWatching;
                },
                /** @inheritdoc */
                preRender: function () {
@@ -169,9 +170,12 @@
                        checker = setInterval( function () {
                                toast.show( mw.msg( 
'mobile-frontend-watchlist-please-wait' ) );
                        }, 1000 );
-                       this.schema.log( {
-                               isWatched: self.options.isWatched
-                       } );
+                       if ( this.schema ) {
+                               this.schema.log( {
+                                       funnel: self.options.funnel,
+                                       isWatched: self.options.isWatched
+                               } );
+                       }
                        gateway.toggleStatus( page ).always( function () {
                                clearInterval( checker );
                        } ).done( function () {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9de14489a88e757d44fd396389f416ba7c7cc8ac
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Bmansurov <bmansu...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to