From 0fcd43973696906a695655e257e977302d8f0db2 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Tue, 18 Apr 2017 18:35:00 -0500 Subject: [PATCH] analytics --- .../app/frontend/controllers/_base.js | 20 ++++++++++++++++++- .../javascripts/app/services/authManager.js | 8 ++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/app/frontend/controllers/_base.js b/app/assets/javascripts/app/frontend/controllers/_base.js index 985b98649..441bca4c1 100644 --- a/app/assets/javascripts/app/frontend/controllers/_base.js +++ b/app/assets/javascripts/app/frontend/controllers/_base.js @@ -1,10 +1,28 @@ class BaseCtrl { - constructor(syncManager, dbManager) { + constructor(syncManager, dbManager, authManager) { dbManager.openDatabase(null, function(){ // new database, delete syncToken so that items can be refetched entirely from server syncManager.clearSyncToken(); syncManager.sync(); }) + + // load analytics + window._paq = window._paq || []; + + (function() { + var u="https://piwik.standardnotes.org/"; + window._paq.push(['setTrackerUrl', u+'piwik.php']); + window._paq.push(['setSiteId', '2']); + 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+'piwik.js'; s.parentNode.insertBefore(g,s); + })(); + + var analyticsId = authManager.getUserAnalyticsId(); + if(analyticsId) { + window._paq.push(['setUserId', analyticsId]); + } + window._paq.push(['trackPageView']); + window._paq.push(['enableLinkTracking']); } } diff --git a/app/assets/javascripts/app/services/authManager.js b/app/assets/javascripts/app/services/authManager.js index c2615d1b3..b972ea0b1 100644 --- a/app/assets/javascripts/app/services/authManager.js +++ b/app/assets/javascripts/app/services/authManager.js @@ -24,6 +24,14 @@ angular.module('app.frontend') } } + this.getUserAnalyticsId = function() { + if(!this.user || !this.user.uuid) { + return null; + } + // anonymize user id irreversably + return Neeto.crypto.hmac256(this.user.uuid, Neeto.crypto.sha256(localStorage.getItem("pw"))); + } + this.offline = function() { return !this.user; }