From fc1c1b402b96cbb07be8a8136d735608a89fccf4 Mon Sep 17 00:00:00 2001 From: Lorenzo Alberto Maria Ambrosi Date: Wed, 3 Apr 2019 12:18:15 +0200 Subject: [PATCH] Add sample property to Mixpanel events Change-type: patch Signed-off-by: Lorenzo Alberto Maria Ambrosi --- lib/gui/app/modules/analytics.js | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/gui/app/modules/analytics.js b/lib/gui/app/modules/analytics.js index 116a0f9d..ae58cc51 100644 --- a/lib/gui/app/modules/analytics.js +++ b/lib/gui/app/modules/analytics.js @@ -31,7 +31,7 @@ const mixpanelToken = settings.get('analyticsMixpanelToken') || const configUrl = settings.get('configUrl') || 'http://balena.io/etcher/static/config.json' -const DEFAULT_PROBABILITY = 1 +const DEFAULT_PROBABILITY = 0.1 const services = { sentry: sentryToken, @@ -48,10 +48,16 @@ resinCorvus.install({ } }) +let mixpanelSample = DEFAULT_PROBABILITY + getConfig(configUrl) .then((config) => { + const mixpanel = _.get(config, [ 'analytics', 'mixpanel' ], {}) + const probability = mixpanel.probability || DEFAULT_PROBABILITY + mixpanelSample = probability + const validatedConfig = isClientEligible(probability) ? validateMixpanelConfig(mixpanel) : null resinCorvus.setConfigs({ - mixpanel: getMixpanelConfig(config) + mixpanel: validatedConfig }) }) @@ -70,14 +76,8 @@ function getConfig(url) { * @param {Object} - config */ // eslint-disable-next-line -function getMixpanelConfig(config) { - const analytics = config.analytics || {} - const mixpanel = analytics.mixpanel || {} - const probability = mixpanel.probability || DEFAULT_PROBABILITY - if (Math.random() > probability) { - return null - } - return validateMixpanelConfig(mixpanel) +function isClientEligible(probability) { + return Math.random() > probability } /** @@ -128,7 +128,12 @@ exports.logDebug = resinCorvus.logDebug * image: '/dev/disk2' * }); */ -exports.logEvent = resinCorvus.logEvent +exports.logEvent = (message, data) => { + const sessionData = { + mixpanelSample + } + resinCorvus.logEvent(message, { ...data, sessionData }) +} /** * @summary Log an exception