import { PostHog } from "posthog-js/dist/module.no-external" import { STORAGE_KEYS } from "./constants" export async function identifyUser(posthog: PostHog): Promise { const stored = await chrome.storage.local.get([STORAGE_KEYS.USER_DATA]) const userData = stored[STORAGE_KEYS.USER_DATA] if (userData?.userId) { posthog.identify(userData.userId, { email: userData.email, name: userData.name, userId: userData.userId, }) } } let posthogInstance: PostHog | null = null let initializationPromise: Promise | null = null export const POSTHOG_CONFIG = { api_host: "https://api.supermemory.ai/orange", person_profiles: "identified_only", disable_external_dependency_loading: true, persistence: "localStorage", capture_pageview: false, autocapture: false, } as const export async function getPostHogInstance(): Promise { if (posthogInstance) { return posthogInstance } if (initializationPromise) { return initializationPromise } initializationPromise = initializePostHog() return initializationPromise } async function initializePostHog(): Promise { try { const posthog = new PostHog() if (!import.meta.env.WXT_POSTHOG_API_KEY) { console.error("PostHog API key not configured") throw new Error("PostHog API key not configured") } posthog.init(import.meta.env.WXT_POSTHOG_API_KEY || "", POSTHOG_CONFIG) await identifyUser(posthog) posthogInstance = posthog return posthog } catch (error) { console.error("Failed to initialize PostHog:", error) initializationPromise = null throw error } } export async function trackEvent( eventName: string, properties?: Record, ): Promise { try { const posthog = await getPostHogInstance() posthog.capture(eventName, properties) } catch (error) { console.error(`Failed to track event ${eventName}:`, error) } }