39 lines
950 B
JavaScript
39 lines
950 B
JavaScript
const PostHog = require("posthog-node")
|
|
const {
|
|
BUDIBASE_POSTHOG_URL,
|
|
BUDIBASE_POSTHOG_TOKEN,
|
|
AnalyticsEvents,
|
|
} = require("../constants")
|
|
const ConfigManager = require("../structures/ConfigManager")
|
|
|
|
class AnalyticsClient {
|
|
constructor() {
|
|
this.client = new PostHog(BUDIBASE_POSTHOG_TOKEN, {
|
|
host: BUDIBASE_POSTHOG_URL,
|
|
})
|
|
this.configManager = new ConfigManager()
|
|
}
|
|
|
|
capture(event) {
|
|
if (this.configManager.config.analyticsDisabled) return
|
|
|
|
this.client.capture(event)
|
|
}
|
|
|
|
enable() {
|
|
this.configManager.removeKey("analyticsDisabled")
|
|
this.client.capture({ event: AnalyticsEvents.OptIn, distinctId: "cli" })
|
|
}
|
|
|
|
disable() {
|
|
this.client.capture({ event: AnalyticsEvents.OptOut, distinctId: "cli" })
|
|
this.configManager.setValue("analyticsDisabled", true)
|
|
}
|
|
|
|
status() {
|
|
return this.configManager.config.analyticsDisabled ? "disabled" : "enabled"
|
|
}
|
|
}
|
|
|
|
module.exports = AnalyticsClient
|