Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Commit 6f80d3c

Browse files
SnchitGrovershubhsnov
authored andcommitted
Changes to send data only once per 24 hours (#14695)
* Changes to send data only once per 24 hours * Update HealthLogger.js
1 parent 379a26b commit 6f80d3c

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

src/extensions/default/HealthData/HealthDataManager.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -308,22 +308,16 @@ define(function (require, exports, module) {
308308
isHDTracking = prefs.get("healthDataTracking"),
309309
isEventDataAlreadySent;
310310

311-
var options = {
312-
location: {
313-
scope: "default"
314-
}
315-
};
316-
317311
if (isHDTracking) {
318-
isEventDataAlreadySent = PreferencesManager.getViewState(Eventparams.eventName);
319-
PreferencesManager.setViewState(Eventparams.eventName, 1, options);
312+
isEventDataAlreadySent = HealthLogger.analyticsEventMap.get(Eventparams.eventName);
313+
HealthLogger.analyticsEventMap.set(Eventparams.eventName, true);
320314
if (!isEventDataAlreadySent || forceSend) {
321315
sendAnalyticsDataToServer(Eventparams)
322316
.done(function () {
323-
PreferencesManager.setViewState(Eventparams.eventName, 1, options);
317+
HealthLogger.analyticsEventMap.set(Eventparams.eventName, true);
324318
result.resolve();
325319
}).fail(function () {
326-
PreferencesManager.setViewState(Eventparams.eventName, 0, options);
320+
HealthLogger.analyticsEventMap.set(Eventparams.eventName, false);
327321
result.reject();
328322
});
329323
} else {
@@ -336,6 +330,17 @@ define(function (require, exports, module) {
336330
return result.promise();
337331
}
338332

333+
/**
334+
* This function is auto called after 24 hours to empty the map
335+
* Map is used to make sure that we send an event only once per 24 hours
336+
**/
337+
338+
function emptyAnalyticsMap() {
339+
HealthLogger.analyticsEventMap.clear();
340+
setTimeout(emptyAnalyticsMap, ONE_DAY);
341+
}
342+
setTimeout(emptyAnalyticsMap, ONE_DAY);
343+
339344
// Expose a command to test data sending capability, but limit it to dev environment only
340345
CommandManager.register("Sends health data and Analytics data for testing purpose", "sendHealthData", function() {
341346
if (brackets.config.environment === "stage") {

src/utils/HealthLogger.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
/**
2525
* Utilities functions related to Health Data logging
2626
*/
27+
/*global Map*/
2728
define(function (require, exports, module) {
2829
"use strict";
2930

@@ -36,7 +37,8 @@ define(function (require, exports, module) {
3637
EventDispatcher = require("utils/EventDispatcher"),
3738

3839
HEALTH_DATA_STATE_KEY = "HealthData.Logs",
39-
logHealthData = true;
40+
logHealthData = true,
41+
analyticsEventMap = new Map();
4042

4143
var commonStrings = { USAGE: "usage",
4244
FILE_OPEN: "fileOpen",
@@ -319,9 +321,10 @@ define(function (require, exports, module) {
319321
* needs to be logged- should be a js var compatible string
320322
*/
321323
function sendAnalyticsData(eventName, eventCategory, eventSubCategory, eventType, eventSubType) {
322-
var isEventDataAlreadySent = PreferencesManager.getViewState(eventName),
324+
var isEventDataAlreadySent = analyticsEventMap.get(eventName),
323325
isHDTracking = PreferencesManager.getExtensionPrefs("healthData").get("healthDataTracking"),
324326
eventParams = {};
327+
325328
if (isHDTracking && !isEventDataAlreadySent && eventName && eventCategory) {
326329
eventParams = {
327330
eventName: eventName,
@@ -363,4 +366,5 @@ define(function (require, exports, module) {
363366
// A new search context on search bar up-Gives an idea of number of times user did a discrete search
364367
exports.SEARCH_NEW = "searchNew";
365368
exports.commonStrings = commonStrings;
369+
exports.analyticsEventMap = analyticsEventMap;
366370
});

0 commit comments

Comments
 (0)