import {POSTHOG_API_KEY, POSTHOG_URL} from "../Enum/EnvironmentVariable"; class AnalyticsClient { // eslint-disable-next-line @typescript-eslint/no-explicit-any private posthogPromise: Promise; constructor() { if (POSTHOG_API_KEY && POSTHOG_URL) { this.posthogPromise = import('posthog-js').then(({default: posthog}) => { posthog.init(POSTHOG_API_KEY, { api_host: POSTHOG_URL, disable_cookie: true }); return posthog; }); } else { this.posthogPromise = Promise.reject(); } } identifyUser(uuid: string) { this.posthogPromise.then(posthog => { posthog.identify(uuid, { uuid, wa: true }); }).catch(); } loggedWithSso() { this.posthogPromise.then(posthog => { posthog.capture('wa-logged-sso'); }).catch(); } loggedWithToken() { this.posthogPromise.then(posthog => { posthog.capture('wa-logged-token'); }).catch(); } enteredRoom(roomId: string) { this.posthogPromise.then(posthog => { posthog.capture('$pageView', {roomId}); }).catch(); } openedMenu() { this.posthogPromise.then(posthog => { posthog.capture('wa-opened-menu'); }).catch(); } launchEmote(emote: string) { this.posthogPromise.then(posthog => { posthog.capture('wa-emote-launch', {emote}); }).catch(); } enteredJitsi(roomName: string, roomId: string) { this.posthogPromise.then(posthog => { posthog.capture('wa-entered-jitsi', {roomName, roomId}); }).catch(); } } export const analyticsClient = new AnalyticsClient();