From 772847fc88d5d0914cd025a179e7eb38d17ec0a2 Mon Sep 17 00:00:00 2001 From: Kushagra Gour Date: Wed, 4 Jan 2017 02:33:53 +0530 Subject: [PATCH] event fix and add once --- src/analytics.js | 4 ++-- src/script.js | 24 +++++++++++++++++++----- src/utils.js | 15 ++++++++++++++- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/analytics.js b/src/analytics.js index d1c3a12..3ff7b72 100644 --- a/src/analytics.js +++ b/src/analytics.js @@ -10,7 +10,7 @@ window.trackEvent = function (category, action, label, value) { } } -// if online, load after 2 seconds +// if online, load after sometime if (navigator.onLine && !window.DEBUG) { /* eslint-disable */ @@ -26,7 +26,7 @@ if (navigator.onLine && !window.DEBUG) { // required for chrome extension protocol ga('set', 'checkProtocolTask', function(){ /* nothing */ }); ga('send', 'pageview'); - }, 0); + }, 100); /* eslint-enable */ } \ No newline at end of file diff --git a/src/script.js b/src/script.js index 95732f6..db31d36 100644 --- a/src/script.js +++ b/src/script.js @@ -154,7 +154,6 @@ settingsBtn, onboardModal, notificationsBtn */ document.body.classList.add('layout-' + mode); resetSplitting(); - trackEvent('ui', 'toggleLayout', mode); } function onExternalLibChange() { @@ -365,6 +364,7 @@ settingsBtn, onboardModal, notificationsBtn */ addLibraryModal.classList.remove('is-modal-visible'); onboardModal.classList.remove('is-modal-visible'); toggleSavedItemsPane(false); + document.dispatchEvent( new Event('overlaysClosed')); } /** @@ -710,13 +710,21 @@ settingsBtn, onboardModal, notificationsBtn */ CodeMirror.modeURL = "lib/codemirror/mode/%N/%N.js"; - layoutBtn1.addEventListener('click', function () { saveSetting('layoutMode', 1); toggleLayout(1); return false; }); - layoutBtn2.addEventListener('click', function () { saveSetting('layoutMode', 2); toggleLayout(2); return false; }); - layoutBtn3.addEventListener('click', function () { saveSetting('layoutMode', 3); toggleLayout(3); return false; }); + function getToggleLayoutButtonListener(mode) { + return function () { + saveSetting('layoutMode', mode); + trackEvent('ui', 'toggleLayoutClick', mode); + toggleLayout(mode); + return false; + }; + } + layoutBtn1.addEventListener('click', getToggleLayoutButtonListener(1)); + layoutBtn2.addEventListener('click', getToggleLayoutButtonListener(2)); + layoutBtn3.addEventListener('click', getToggleLayoutButtonListener(3)); utils.onButtonClick(helpBtn, function () { helpModal.classList.toggle('is-modal-visible'); - document.body.classList[onboardModal.classList.contains('is-modal-visible') ? 'add' : 'remove']('overlay-visible'); + document.body.classList[helpModal.classList.contains('is-modal-visible') ? 'add' : 'remove']('overlay-visible'); trackEvent('ui', 'helpButtonClick'); }); utils.onButtonClick(addLibraryBtn, function () { @@ -938,6 +946,12 @@ settingsBtn, onboardModal, notificationsBtn */ if (!result.lastSeenVersion) { onboardModal.classList.add('is-modal-visible'); trackEvent('ui', 'onboardModalSeen'); + // set the current version as seen on closing the onboard modal + utils.once(document, 'overlaysClosed', function (e) { + chrome.storage.sync.set({ + lastSeenVersion: version + }, function () {}); + }); } // console.utils.log(result, hasSeenNotifications, version); if (!result.lastSeenVersion || utils.semverCompare(result.lastSeenVersion, version) === -1) { diff --git a/src/utils.js b/src/utils.js index 03713f4..62c9af7 100644 --- a/src/utils.js +++ b/src/utils.js @@ -98,12 +98,25 @@ return retVal; } + // create a one-time event + function once(node, type, callback) { + // create event + node.addEventListener(type, function(e) { + // remove event + e.target.removeEventListener(type, arguments.callee); + // call handler + return callback(e); + }); + + } + window.utils = { semverCompare: semverCompare, generateRandomId: generateRandomId, onButtonClick: onButtonClick, addInfiniteLoopProtection: addInfiniteLoopProtection, getHumanDate: getHumanDate, - log: log + log: log, + once: once }; })();