forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathHealthDataManager.js
More file actions
1 lines (1 loc) · 2.35 KB
/
Copy pathHealthDataManager.js
File metadata and controls
1 lines (1 loc) · 2.35 KB
1
define(function(require,exports,module){var AppInit=brackets.getModule("utils/AppInit"),PreferencesManager=brackets.getModule("preferences/PreferencesManager"),Strings=brackets.getModule("strings"),Metrics=brackets.getModule("utils/Metrics"),SendToAnalytics=require("SendToAnalytics"),prefs=PreferencesManager.getExtensionPrefs("healthData"),ONE_SECOND=1e3,TEN_SECOND=1e4,ONE_MINUTE=6e4,MAX_DAYS_TO_KEEP_COUNTS=60,USAGE_COUNTS_KEY="healthDataUsage";function isPowerUser(){let usageData=PreferencesManager.getViewState(USAGE_COUNTS_KEY)||{},dateKeys=Object.keys(usageData),dateBefore14Days=new Date,totalUsageMinutes=0,totalUsageDays=0;dateBefore14Days.setUTCDate(dateBefore14Days.getUTCDate()-14);for(let dateKey of dateKeys){let date;new Date(dateKey)>=dateBefore14Days&&(totalUsageDays++,totalUsageMinutes+=usageData[dateKey])}return totalUsageDays>=3||totalUsageMinutes/60>=8}let healthDataDisabled;function _pruneUsageData(){let usageData=PreferencesManager.getViewState(USAGE_COUNTS_KEY)||{},dateKeys=Object.keys(usageData),dateBefore60Days=new Date;if(dateBefore60Days.setDate(dateBefore60Days.getDate()-MAX_DAYS_TO_KEEP_COUNTS),dateKeys.length>MAX_DAYS_TO_KEEP_COUNTS)for(let dateKey of dateKeys){let date;new Date(dateKey)<dateBefore60Days&&delete usageData[dateKey]}PreferencesManager.setViewState(USAGE_COUNTS_KEY,usageData)}function _trackUsageInfo(){_pruneUsageData(),setInterval(()=>{if(healthDataDisabled)return;let usageData=PreferencesManager.getViewState(USAGE_COUNTS_KEY)||{},dateNow,today=(new Date).toISOString().split("T")[0];usageData[today]=(usageData[today]||0)+1,PreferencesManager.setViewState(USAGE_COUNTS_KEY,usageData)},ONE_MINUTE)}prefs.definePreference("healthDataTracking","boolean",!0,{description:Strings.DESCRIPTION_HEALTH_DATA_TRACKING}),prefs.on("change","healthDataTracking",function(){healthDataDisabled=!prefs.get("healthDataTracking"),Metrics.setDisabled(healthDataDisabled),logger.loggingOptions.healthDataDisabled=healthDataDisabled}),AppInit.appReady(function(){Metrics.init({isPowerUserFn:isPowerUser}),(healthDataDisabled=!prefs.get("healthDataTracking"))&&!Phoenix.healthTrackingDisabled&&Metrics.countEvent(Metrics.EVENT_TYPE.PLATFORM,"metricBoot","disableErr"),Metrics.setDisabled(healthDataDisabled),SendToAnalytics.sendPlatformMetrics(),SendToAnalytics.sendThemesMetrics(),_trackUsageInfo(),setTimeout(SendToAnalytics.sendStartupPerformanceMetrics,1e4)})});