47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
|
function register ({ registerHook, peertubeHelpers }) {
|
||
|
initMatomo(registerHook, peertubeHelpers)
|
||
|
.catch(err => console.error('Cannot initialize Matomo', err))
|
||
|
}
|
||
|
|
||
|
export {
|
||
|
register
|
||
|
}
|
||
|
|
||
|
function initMatomo (registerHook, peertubeHelpers) {
|
||
|
return peertubeHelpers.getSettings()
|
||
|
.then(s => {
|
||
|
if (!s || !s['site-id'] || !s['url']) {
|
||
|
console.error('Matomo settings are not set.')
|
||
|
return
|
||
|
}
|
||
|
|
||
|
const matomoUrl = s['url']
|
||
|
const siteId = s['site-id']
|
||
|
|
||
|
window._paq = window._paq || [];
|
||
|
window._paq.push(['trackPageView']);
|
||
|
window._paq.push(['enableLinkTracking']);
|
||
|
(function() {
|
||
|
var u = matomoUrl + '/';
|
||
|
window._paq.push(['setTrackerUrl', u+'matomo.php']);
|
||
|
window._paq.push(['setSiteId', siteId]);
|
||
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||
|
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
||
|
})();
|
||
|
|
||
|
window._paq.push(['setDocumentTitle', window.document.title]);
|
||
|
window._paq.push(['setCustomUrl', '/' + window.location.hash.substr(1)]);
|
||
|
window._paq.push(['trackPageView']);
|
||
|
|
||
|
registerHook({
|
||
|
target: 'action:router.navigation-end',
|
||
|
handler: function (params) {
|
||
|
window._paq.push(['setDocumentTitle', window.document.title]);
|
||
|
window._paq.push(['setCustomUrl', params.path]);
|
||
|
window._paq.push(['trackPageView']);
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
|
||
|
}
|