mediawiki-skins-MinervaNeue/resources/skins.minerva.options/shareIcon.js
Piotr Miazga 6c2450a5f2 Track share button usage
Use MobileWebShareButton schema to track interactions with

Additional changes: Fix how button is injected into page actions
bar as last AMC changes broke it.

Bug: T207280
Change-Id: Ie7d7ab6bc66df5ab30aaec77e2ee8583c69b8f48
2019-03-18 09:03:42 -07:00

47 lines
1.3 KiB
JavaScript

( function ( M, msg, config ) {
var Icon = M.require( 'mobile.startup' ).Icon,
trackShare = M.require( 'skins.minerva.share/track' );
/**
* Generate a mouse event that when run
* shares the current url with the current page title as the title and text
* @param {Navigator} navigator object with method share
* @return {Function} mouse event click handler
*/
function clickShareHandler( navigator ) {
return function () {
var url = new URL( window.location.href );
url.searchParams.append( 'wprov', 'mfsw1' );
url.searchParams.delete( 'debug' );
trackShare( 'clickShareButton' );
navigator.share( {
title: config.get( 'wgTitle' ),
text: config.get( 'wgTitle' ),
url: url.toString()
} ).then( function () {
trackShare( 'SharedToApp' );
} );
};
}
/**
* Generate a share icon for sharing pages using the navigation share API
*
* @param {Navigator} navigator object with method share
* @return {Icon}
*/
function shareIcon( navigator ) {
return new Icon( {
tagName: 'button',
glyphPrefix: 'minerva',
title: msg( 'skin-minerva-share' ),
name: 'share',
events: {
click: clickShareHandler( navigator )
}
} );
}
M.define( 'skins.minerva.share/shareIcon', shareIcon );
}( mw.mobileFrontend, mw.msg, mw.config ) );