Skip to content

Commit

Permalink
Respect global telemetry setting
Browse files Browse the repository at this point in the history
  • Loading branch information
Kenneth Auchenberg committed Apr 11, 2020
1 parent c5b4550 commit 9d7c203
Show file tree
Hide file tree
Showing 4 changed files with 288 additions and 130 deletions.
1 change: 1 addition & 0 deletions ext-src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export function activate(context: vscode.ExtensionContext) {
const debugProvider = new DebugProvider(windowManager);

const telemetry = new Telemetry();
telemetry.sendEvent('activate');

vscode.window.registerTreeDataProvider('targetTree', new TargetTreeProvider());
vscode.debug.registerDebugConfigurationProvider('browser-preview', debugProvider.getProvider());
Expand Down
52 changes: 46 additions & 6 deletions ext-src/telemetry.ts
Original file line number Diff line number Diff line change
@@ -1,38 +1,78 @@
var Mixpanel = require('mixpanel');
import * as vscode from 'vscode';
import osName = require('os-name');
const osName = require('os-name');
const publicIp = require('public-ip');

export class Telemetry {
client: any;
userId: string;
ip: string;
isTelemetryEnabled: boolean;

constructor() {
this.client = Mixpanel.init('d0149f7b700b44a18fa53e2cab03b564');
this.userId = vscode.env.machineId;
this.isTelemetryEnabled = false;
this.ip = '';

this.getSettingFromConfig();
this.setup();
vscode.workspace.onDidChangeConfiguration(this.configurationChanged, this);
}

async setup() {
if (!this.isTelemetryEnabled) {
return;
}

if (this.client) {
return;
}

this.client = Mixpanel.init('d0149f7b700b44a18fa53e2cab03b564');

let extension = vscode.extensions.getExtension('auchenberg.vscode-browser-preview');
let extensionVersion = extension ? extension.packageJSON.version : '<none>';

// Store
this.ip = await publicIp.v4();

this.client.people.set(this.userId, {
sessionId: vscode.env.sessionId,
language: vscode.env.language,
vscodeVersion: vscode.version,
platform: osName(),
version: extensionVersion
version: extensionVersion,
ip: this.ip
});

this.sendEvent('activate');
}

sendEvent(eventName: string, params?: any) {
if (!this.isTelemetryEnabled) {
return;
}

let data = {
...params,
distinct_id: this.userId
distinct_id: this.userId,
ip: this.ip
};

this.client.track(eventName, data);
}

configurationChanged(e: vscode.ConfigurationChangeEvent) {
vscode.window.showInformationMessage('Updated');
this.getSettingFromConfig();
}

private getSettingFromConfig() {
let config = vscode.workspace.getConfiguration('telemetry');
if (config) {
let enableTelemetry = config.get<boolean>('enableTelemetry');
this.isTelemetryEnabled = !!enableTelemetry;
}
if (this.isTelemetryEnabled) {
this.setup();
}
}
}
Loading

0 comments on commit 9d7c203

Please sign in to comment.