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