/** * This was abstracted from wp-calypso's analytics lib: https://github.com/Automattic/wp-calypso/blob/trunk/client/lib/analytics/README.md * Some stuff was removed like GA tracking and other things not necessary for Jetpack tracking. * * This library should only be used and loaded if the Jetpack site is connected. */ // Load tracking scripts window._tkq = window._tkq || []; let _user; const debug = console.error; // eslint-disable-line no-console /** * Build a query string. * * @param {string|object} group - Stat group, or object mapping groups to names. * @param {string} [name] - Stat name, when `group` is a string. * @returns {string} Query string fragment. */ function buildQuerystring( group, name ) { let uriComponent = ''; if ( 'object' === typeof group ) { for ( const key in group ) { uriComponent += '&x_' + encodeURIComponent( key ) + '=' + encodeURIComponent( group[ key ] ); } } else { uriComponent = '&x_' + encodeURIComponent( group ) + '=' + encodeURIComponent( name ); } return uriComponent; } const analytics = { initialize: function ( userId, username ) { analytics.setUser( userId, username ); analytics.identifyUser(); }, mc: { bumpStat: function ( group, name ) { const uriComponent = buildQuerystring( group, name ); // prints debug info new Image().src = document.location.protocol + '//pixel.wp.com/g.gif?v=wpcom-no-pv' + uriComponent + '&t=' + Math.random(); }, }, tracks: { recordEvent: function ( eventName, eventProperties ) { eventProperties = eventProperties || {}; if ( eventName.indexOf( 'jetpack_' ) !== 0 ) { debug( '- Event name must be prefixed by "jetpack_"' ); return; } window._tkq.push( [ 'recordEvent', eventName, eventProperties ] ); }, recordPageView: function ( urlPath ) { analytics.tracks.recordEvent( 'jetpack_page_view', { path: urlPath, } ); }, }, setUser: function ( userId, username ) { _user = { ID: userId, username: username }; }, identifyUser: function () { // Don't identify the user if we don't have one if ( _user ) { window._tkq.push( [ 'identifyUser', _user.ID, _user.username ] ); } }, clearedIdentity: function () { window._tkq.push( [ 'clearIdentity' ] ); }, }; if ( typeof module !== 'undefined' ) { // Bundled by Webpack. module.exports = analytics; } else { // Direct load. window.analytics = analytics; }