mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-05 08:10:14 +00:00
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import posthog from "posthog-js"
|
|
import { TelemetrySetting } from "@roo/shared/TelemetrySetting"
|
|
|
|
class TelemetryClient {
|
|
private static instance: TelemetryClient
|
|
private static telemetryEnabled: boolean = false
|
|
|
|
public updateTelemetryState(telemetrySetting: TelemetrySetting, apiKey?: string, distinctId?: string) {
|
|
posthog.reset()
|
|
|
|
if (telemetrySetting === "enabled" && apiKey && distinctId) {
|
|
TelemetryClient.telemetryEnabled = true
|
|
|
|
posthog.init(apiKey, {
|
|
api_host: "https://us.i.posthog.com",
|
|
persistence: "localStorage",
|
|
loaded: () => posthog.identify(distinctId),
|
|
capture_pageview: false,
|
|
capture_pageleave: false,
|
|
autocapture: false,
|
|
})
|
|
} else {
|
|
TelemetryClient.telemetryEnabled = false
|
|
}
|
|
}
|
|
|
|
public static getInstance(): TelemetryClient {
|
|
if (!TelemetryClient.instance) {
|
|
TelemetryClient.instance = new TelemetryClient()
|
|
}
|
|
return TelemetryClient.instance
|
|
}
|
|
|
|
public capture(eventName: string, properties?: Record<string, any>) {
|
|
if (TelemetryClient.telemetryEnabled) {
|
|
try {
|
|
posthog.capture(eventName, properties)
|
|
} catch (error) {
|
|
// Silently fail if there's an error capturing an event
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export const telemetryClient = TelemetryClient.getInstance()
|