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

Commit 89d7ec6

Browse files
committed
Merge pull request #10849 from adobe/prafulVaishnav/HealthDataRefactoring
HealthDataRefactoring
2 parents f2942e6 + 2ab1563 commit 89d7ec6

File tree

5 files changed

+30
-69
lines changed

5 files changed

+30
-69
lines changed

src/extensibility/ExtensionManager.js

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -99,23 +99,6 @@ define(function (require, exports, module) {
9999
* status: the current status, one of the status constants above
100100
*/
101101
var extensions = {};
102-
103-
/**
104-
* @private
105-
* @type {Object.<string, {metadata: Object, path: string, status: string}>}
106-
* The set of all extensions (in registry and locally installed) present in user location.
107-
* The fields of each record are:
108-
* installInfo: object containing the info for a locally-installed extension:
109-
* metadata: the package metadata loaded from the local package.json, or null if it's a legacy extension.
110-
* path: the local path to the extension folder on disk
111-
* status: the current status, one of the status constants above
112-
*/
113-
var userExtensions = {};
114-
115-
/**
116-
* Registry object container
117-
*/
118-
var registryObject = {};
119102

120103
/**
121104
* Requested changes to the installed extensions.
@@ -227,7 +210,7 @@ define(function (require, exports, module) {
227210
cache: false
228211
})
229212
.done(function (data) {
230-
exports.registryObject = data;
213+
exports.isRegistryObjectUpdated = true;
231214
Object.keys(data).forEach(function (id) {
232215
if (!extensions[id]) {
233216
extensions[id] = {};
@@ -284,18 +267,6 @@ define(function (require, exports, module) {
284267
locationType: locationType,
285268
status: (e.type === "loadFailed" ? START_FAILED : ENABLED)
286269
};
287-
288-
if (locationType === LOCATION_USER) {
289-
if (!userExtensions[id]) {
290-
userExtensions[id] = {};
291-
}
292-
293-
userExtensions[id].installInfo = {
294-
metadata: metadata,
295-
path: path,
296-
status: (e.type === "loadFailed" ? START_FAILED : ENABLED)
297-
};
298-
}
299270

300271
synchronizeEntry(id);
301272
loadTheme(id);
@@ -416,9 +387,6 @@ define(function (require, exports, module) {
416387
Package.remove(extensions[id].installInfo.path)
417388
.done(function () {
418389
extensions[id].installInfo = null;
419-
if (userExtensions[id] && userExtensions[id].installInfo) {
420-
userExtensions[id].installInfo = null;
421-
}
422390
result.resolve();
423391
exports.trigger("statusChange", id);
424392
})
@@ -808,7 +776,6 @@ define(function (require, exports, module) {
808776
exports.remove = remove;
809777
exports.update = update;
810778
exports.extensions = extensions;
811-
exports.userExtensions = userExtensions;
812779
exports.cleanupUpdates = cleanupUpdates;
813780
exports.markForRemoval = markForRemoval;
814781
exports.isMarkedForRemoval = isMarkedForRemoval;
@@ -822,19 +789,18 @@ define(function (require, exports, module) {
822789
exports.updateExtensions = updateExtensions;
823790
exports.getAvailableUpdates = getAvailableUpdates;
824791
exports.cleanAvailableUpdates = cleanAvailableUpdates;
825-
826-
exports.registryObject = registryObject;
827-
792+
exports.isRegistryObjectUpdated = false;
793+
828794
exports.ENABLED = ENABLED;
829795
exports.START_FAILED = START_FAILED;
830796

831797
exports.LOCATION_DEFAULT = LOCATION_DEFAULT;
832798
exports.LOCATION_DEV = LOCATION_DEV;
833799
exports.LOCATION_USER = LOCATION_USER;
834800
exports.LOCATION_UNKNOWN = LOCATION_UNKNOWN;
835-
801+
836802
// For unit testing only
837803
exports._getAutoInstallFiles = _getAutoInstallFiles;
838804
exports._reset = _reset;
839805
exports._setExtensions = _setExtensions;
840-
});
806+
});

src/extensions/default/HealthData/HealthDataManager.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ define(function (require, exports, module) {
5858
}
5959

6060
oneTimeHealthData.uuid = userUuid;
61-
oneTimeHealthData.snapshotTime = (new Date()).getTime();
61+
oneTimeHealthData.snapshotTime = Date.now();
6262
oneTimeHealthData.os = brackets.platform;
6363
oneTimeHealthData.userAgent = navigator.userAgent;
6464
oneTimeHealthData.osLanguage = brackets.app.language;
6565
oneTimeHealthData.bracketsLanguage = brackets.getLocale();
6666
oneTimeHealthData.bracketsVersion = brackets.metadata.version;
6767

68-
HealthDataUtils.getInstalledExtensions()
68+
HealthDataUtils.getUserInstalledExtensions()
6969
.done(function (userInstalledExtensions) {
7070
oneTimeHealthData.installedExtensions = userInstalledExtensions;
7171
})
@@ -122,12 +122,12 @@ define(function (require, exports, module) {
122122

123123
window.clearTimeout(timeoutVar);
124124
if (isHDTracking && notificationDialogShown) {
125-
var lastTimeSent = PreferencesManager.getViewState("lastTimeSentData"),
126-
currentTime = (new Date()).getTime();
125+
var lastTimeSent = PreferencesManager.getViewState("lastTimeSentHealthData"),
126+
currentTime = Date.now();
127127

128128
if (!lastTimeSent || (currentTime >= lastTimeSent + ONE_DAY)) {
129129
// Setting the time here to avoid any chance of sending data before ONE_DAY. Whether or not the request to the server is successful, we will be sending the data only after ONE_DAY has passed.
130-
PreferencesManager.setViewState("lastTimeSentData", (new Date()).getTime());
130+
PreferencesManager.setViewState("lastTimeSentHealthData", Date.now());
131131
sendHealthDataToServer()
132132
.done(function () {
133133
result.resolve();
@@ -167,4 +167,4 @@ define(function (require, exports, module) {
167167

168168
exports.getHealthData = getHealthData;
169169
exports.checkHealthDataSend = checkHealthDataSend;
170-
});
170+
});

src/extensions/default/HealthData/HealthDataNotification.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ define(function (require, exports, module) {
8080
AppInit.appReady(function () {
8181
params.parse();
8282
// Check whether the notification dialog should be shown. It will be shown one time. Does not check in testing environment.
83-
if (!params.get("skipHealthDataNotification")) {
83+
if (!params.get("testEnvironment")) {
8484
var isShown = PreferencesManager.getViewState("healthDataNotificationShown");
8585

8686
if (!isShown) {

src/extensions/default/HealthData/HealthDataUtils.js

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,48 +29,43 @@ define(function (require, exports, module) {
2929

3030
var ExtensionManager = brackets.getModule("extensibility/ExtensionManager"),
3131
_ = brackets.getModule("thirdparty/lodash");
32-
32+
33+
3334
/**
3435
* @private
35-
* For each user installed extension, check if it's present in the registry.
36-
* @param {Object} object that contains information about extensions fetched from registry
37-
* @param {Object} all user installed extensions
36+
* Check for the extensions whether it is user installed and present in the registry.
37+
* @param {Object} extensions synchronized with registry object
3838
* return {Array} userInstalledExtensions
39-
*/
40-
function getUserExtensionsInRegistry(registryObject, userExtensions) {
39+
*/
40+
function getUserExtensionsPresentInRegistry(extensions) {
4141
var userInstalledExtensions = [];
42-
43-
_.forEach(userExtensions, function (extension, extensionId) {
44-
var registryExtension = registryObject[extensionId];
45-
if (extension && extension.installInfo && registryExtension) {
42+
_.forEach(extensions, function (extension, extensionId) {
43+
if (extension && extension.installInfo && extension.installInfo.locationType === "user" && extension.registryInfo) {
4644
userInstalledExtensions.push({"name" : extensionId, "version" : extension.installInfo.metadata.version});
4745
}
4846
});
4947

5048
return userInstalledExtensions;
5149
}
52-
5350
/**
5451
* Utility function to get the user installed extension which are present in the registry
5552
*/
56-
function getInstalledExtensions() {
53+
function getUserInstalledExtensions() {
5754
var result = new $.Deferred();
58-
var registryExtensions = ExtensionManager.registryObject,
59-
userExtensions = ExtensionManager.userExtensions;
60-
61-
if (Object.keys(registryExtensions).length === 0) {
55+
56+
if (!ExtensionManager.isRegistryObjectUpdated) {
6257
ExtensionManager.downloadRegistry().done(function () {
63-
result.resolve(getUserExtensionsInRegistry(ExtensionManager.registryObject, userExtensions));
58+
result.resolve(getUserExtensionsPresentInRegistry(ExtensionManager.extensions));
6459
})
6560
.fail(function () {
6661
result.resolve([]);
6762
});
6863
} else {
69-
result.resolve(getUserExtensionsInRegistry(registryExtensions, userExtensions));
64+
result.resolve(getUserExtensionsPresentInRegistry(ExtensionManager.extensions));
7065
}
7166

7267
return result.promise();
7368
}
7469

75-
exports.getInstalledExtensions = getInstalledExtensions;
76-
});
70+
exports.getUserInstalledExtensions = getUserInstalledExtensions;
71+
});

src/extensions/default/HealthData/unittests.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ define(function (require, exports, module) {
3838
beforeEach(function () {
3939
SpecRunnerUtils.createTestWindowAndRun(this, function (w) {
4040
testWindow = w;
41-
}, {"params" : {"skipHealthDataNotification": true}});
41+
});
4242

4343
});
4444

@@ -65,14 +65,14 @@ define(function (require, exports, module) {
6565
});
6666

6767
it("should send data to server", function () {
68-
PreferencesManager.setViewState("lastTimeSendHealthData", (new Date()).getTime() - ONE_DAY);
68+
PreferencesManager.setViewState("lastTimeSentHealthData", Date.now() - ONE_DAY);
6969
PreferencesManager.setViewState("healthDataNotificationShown", true);
7070
var promise = HealthDataManager.checkHealthDataSend();
7171
waitsForDone(promise, "Send Data to Server", 4000);
7272
});
7373

7474
it("should not send data to server", function () {
75-
PreferencesManager.setViewState("lastTimeSendHealthData", (new Date()).getTime() - ONE_DAY);
75+
PreferencesManager.setViewState("lastTimeSentHealthData", Date.now() - ONE_DAY);
7676
prefs.set("healthDataTracking", false);
7777
var promise = HealthDataManager.checkHealthDataSend();
7878
waitsForFail(promise, "Send Data to Server", 4000);

0 commit comments

Comments
 (0)