Merge branch 'master' into extensions_register_feature_clean_up

# Conflicts:
#	extensions/support-page/main.ts
This commit is contained in:
Roman committed 2020-10-27 16:25:44 +02:00
commit e2aaaa1e26
112 files changed
+1500 -623

No files matched your search

+4
View File
@@ -4,6 +4,10 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@k8slens/extensions": {
"version": "file:../../src/extensions/npm/extensions",
"dev": true
},
"@webassemblyjs/ast": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+1
View File
@@ -14,6 +14,7 @@
},
"dependencies": {},
"devDependencies": {
"@k8slens/extensions": "file:../../src/extensions/npm/extensions",
"ts-loader": "^8.0.4",
"typescript": "^4.0.3",
"webpack": "^4.44.2",
+53 -2
View File
@@ -1,4 +1,4 @@
import { EventBus, Util } from "@k8slens/extensions"
import { EventBus, Util, Store, App } from "@k8slens/extensions"
import ua from "universal-analytics"
import { machineIdSync } from "node-machine-id"
import { telemetryPreferencesStore } from "./telemetry-preferences-store"
@@ -15,6 +15,8 @@ export class Tracker extends Util.Singleton {
protected locale: string;
protected electronUA: string;
protected reportInterval: NodeJS.Timeout
private constructor() {
super();
try {
@@ -23,7 +25,7 @@ export class Tracker extends Util.Singleton {
this.visitor = ua(Tracker.GA_ID)
}
this.visitor.set("dl", "https://telemetry.k8slens.dev")
this.visitor.set("ua", `Lens ${App.version} (${this.getOS()})`)
}
start() {
@@ -36,6 +38,8 @@ export class Tracker extends Util.Singleton {
}
this.eventHandlers.push(handler)
EventBus.appEventBus.addListener(handler)
this.reportInterval = setInterval(this.reportData, 60 * 60 * 1000) // report every 1h
}
stop() {
@@ -46,12 +50,59 @@ export class Tracker extends Util.Singleton {
for (const handler of this.eventHandlers) {
EventBus.appEventBus.removeListener(handler)
}
if (this.reportInterval) {
clearInterval(this.reportInterval)
}
}
protected async isTelemetryAllowed(): Promise<boolean> {
return telemetryPreferencesStore.enabled
}
protected reportData() {
const clustersList = Store.clusterStore.clustersList
this.event("generic-data", "report", {
appVersion: App.version,
clustersCount: clustersList.length,
workspacesCount: Store.workspaceStore.workspacesList.length
})
clustersList.forEach((cluster) => {
if (!cluster?.metadata.lastSeen) { return }
this.reportClusterData(cluster)
})
}
protected reportClusterData(cluster: Store.ClusterModel) {
this.event("cluster-data", "report", {
id: cluster.metadata.id,
kubernetesVersion: cluster.metadata.version,
distribution: cluster.metadata.distribution,
nodesCount: cluster.metadata.nodes,
lastSeen: cluster.metadata.lastSeen
})
}
protected getOS() {
let os = ""
if (App.isMac) {
os = "MacOS"
} else if(App.isWindows) {
os = "Windows"
} else if (App.isLinux) {
os = "Linux"
if (App.isSnap) {
os += "; Snap"
} else {
os += "; AppImage"
}
} else {
os = "Unknown"
}
return os
}
protected async event(eventCategory: string, eventAction: string, otherParams = {}) {
try {
const allowed = await this.isTelemetryAllowed();
-1
View File
@@ -24,7 +24,6 @@
},
"include": [
"renderer.ts",
"../../src/extensions/npm/**/*.d.ts",
"src/**/*"
]
}