PageIssues should use new standard pageToken getter

Rather than inventing its own page token the PageIssues
schema will rely on the standard page token.

In future when I9bb18d47e36d2d99d812e5b47ea9516d3dff3a16 is
merged this will mean that PageIssues and ReadingDepth have
consistent page tokens.

Bug: T201124
Change-Id: I19fea41e04cd792423ea9d41a673563418b69726
This commit is contained in:
jdlrobson 2018-08-16 14:59:48 -07:00
parent e9e7e8256b
commit eea19f3e18
2 changed files with 19 additions and 13 deletions

View File

@ -266,7 +266,7 @@
}
if ( isLoggingRequired( getIssues( KEYWORD_ALL_SECTIONS ) ) ) {
// Enable logging.
// Enable logging of the PageIssues schema, setting up defaults.
pageIssuesLogger.subscribe(
newTreatmentEnabled,
pageIssuesLogger.newPageIssueSchemaData(

View File

@ -1,9 +1,10 @@
( function ( M, mwConfig, mwNow, mwTrack, mwTrackSubscribe, mwUser ) {
( function ( M, mwConfig, mwTrack, mwTrackSubscribe, mwUser, mwLoader ) {
var
util = M.require( 'mobile.startup/util' ),
EVENT_PAGE_ISSUE_LOG = 'minerva.PageIssuesAB';
/**
* Defines default data for Schema:PageIssues that will be recorded with every event.
* @param {boolean} newTreatmentEnabled
* @param {number} namespaceId The namespace for the page that has issues.
* @param {string[]} pageIssueSeverities An array of PageIssue severities.
@ -18,28 +19,33 @@
issuesSeverity: pageIssueSeverities,
isAnon: mwUser.isAnon(),
editCountBucket: getUserEditBuckets(),
pageToken: mwUser.generateRandomSessionId() + Math.floor( mwNow() ).toString(),
sessionToken: mwUser.sessionId()
};
}
/**
* Enable tracking.
* Enable tracking and add page token to every logged event.
* @param {boolean} newTreatmentEnabled
* @param {Object} pageIssueSchemaData A Partial<Schema:PageIssues> Object that will be mixed with
* with track data.
* @return {void}
*/
function subscribe( newTreatmentEnabled, pageIssueSchemaData ) {
// intermediary event bus that extends the event data before being passed to event-logging.
mwTrackSubscribe( EVENT_PAGE_ISSUE_LOG, function ( topic, data ) {
var mixedData = util.extend( {}, pageIssueSchemaData, data );
// this is wrapped inside a mw.loader call given the need to access mw.eventLog.getPageviewToken
// which may or may not be defined. If EventLogging is not installed, so logging will occur.
mwLoader.using( 'ext.eventLogging.subscriber' ).then( function () {
// set the page token on the request.
pageIssueSchemaData.pageToken = mw.eventLog.getPageviewToken();
// Log readingDepth schema.(ReadingDepth is guarded against multiple enables).
// See https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/WikimediaEvents/+/437686/
mwTrack( 'wikimedia.event.ReadingDepthSchema.enable', bucketToGroup( newTreatmentEnabled ) );
// Log PageIssues schema.
mwTrack( 'wikimedia.event.PageIssues', mixedData );
// intermediary event bus that extends the event data before being passed to event-logging.
mwTrackSubscribe( EVENT_PAGE_ISSUE_LOG, function ( topic, data ) {
var mixedData = util.extend( {}, pageIssueSchemaData, data );
// Log readingDepth schema.(ReadingDepth is guarded against multiple enables).
// See https://gerrit.wikimedia.org/r/#/c/mediawiki/extensions/WikimediaEvents/+/437686/
mwTrack( 'wikimedia.event.ReadingDepthSchema.enable', bucketToGroup( newTreatmentEnabled ) );
// Log PageIssues schema.
mwTrack( 'wikimedia.event.PageIssues', mixedData );
} );
} );
}
@ -94,4 +100,4 @@
subscribe: subscribe,
log: log
} );
}( mw.mobileFrontend, mw.config, mw.now, mw.track, mw.trackSubscribe, mw.user ) );
}( mw.mobileFrontend, mw.config, mw.track, mw.trackSubscribe, mw.user, mw.loader ) );