summaryrefslogtreecommitdiff
path: root/extension/src/telemetry.ts
blob: ea71a54516eeb1a188fe69bd1401706d70b06d33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import * as Segment from "@segment/analytics-node";
import * as vscode from "vscode";

// Setup Segment
const SEGMENT_WRITE_KEY = "57yy2uYXH2bwMuy7djm9PorfFlYqbJL1";
const analytics = new Segment.Analytics({ writeKey: SEGMENT_WRITE_KEY });
analytics.identify({
  userId: vscode.env.machineId,
  //   traits: {
  //     name: "Michael Bolton",
  //     email: "mbolton@example.com",
  //     createdAt: new Date("2014-06-14T02:00:19.467Z"),
  //   },
});

// Enum of telemetry events
export enum TelemetryEvent {
  // Extension has been activated
  ExtensionActivated = "ExtensionActivated",
  // Suggestion has been accepted
  SuggestionAccepted = "SuggestionAccepted",
  // Suggestion has been rejected
  SuggestionRejected = "SuggestionRejected",
  // Queried universal prompt
  UniversalPromptQuery = "UniversalPromptQuery",
  // `Explain Code` button clicked
  ExplainCode = "ExplainCode",
  // `Generate Ideas` button clicked
  GenerateIdeas = "GenerateIdeas",
  // `Suggest Fix` button clicked
  SuggestFix = "SuggestFix",
  // `Create Test` button clicked
  CreateTest = "CreateTest",
  // `AutoDebug This Test` button clicked
  AutoDebugThisTest = "AutoDebugThisTest",
  // Command run to generate docstring
  GenerateDocstring = "GenerateDocstring",
}

export function sendTelemetryEvent(
  event: TelemetryEvent,
  properties?: Record<string, any>
) {
  if (!vscode.env.isTelemetryEnabled) return;

  analytics.track({
    event,
    userId: vscode.env.machineId,
    properties,
  });
}