34 lines
930 B
TypeScript
34 lines
930 B
TypeScript
import PostHog from "posthog-node"
|
|
import { POSTHOG_TOKEN, AnalyticsEvent } from "../constants"
|
|
import { ConfigManager } from "../structures/ConfigManager"
|
|
|
|
export class AnalyticsClient {
|
|
client: PostHog
|
|
configManager: ConfigManager
|
|
|
|
constructor() {
|
|
this.client = new PostHog(POSTHOG_TOKEN, {})
|
|
this.configManager = new ConfigManager()
|
|
}
|
|
|
|
capture(event: { distinctId: string; event: string; properties?: any }) {
|
|
if (this.configManager.config.analyticsDisabled) return
|
|
|
|
this.client.capture(event)
|
|
}
|
|
|
|
enable() {
|
|
this.configManager.removeKey("analyticsDisabled")
|
|
this.client.capture({ event: AnalyticsEvent.OptIn, distinctId: "cli" })
|
|
}
|
|
|
|
disable() {
|
|
this.client.capture({ event: AnalyticsEvent.OptOut, distinctId: "cli" })
|
|
this.configManager.setValue("analyticsDisabled", true)
|
|
}
|
|
|
|
status() {
|
|
return this.configManager.config.analyticsDisabled ? "disabled" : "enabled"
|
|
}
|
|
}
|