"use client"; import { useEffect, useRef, useState } from "react"; import { useOpenPanel } from "@openpanel/nextjs"; import { getTracker, AnalyticsTracker } from "../core/AnalyticsTracker"; import { OpenPanelProvider } from "../providers/OpenPanelProvider"; import { RybbitProvider } from "../providers/RybbitProvider"; let initialized = false; export function useAnalytics(): AnalyticsTracker { const op = useOpenPanel(); const [isReady, setIsReady] = useState(false); const trackerRef = useRef(null); useEffect(() => { if (!initialized) { const tracker = getTracker(); tracker.addProvider(new OpenPanelProvider(op)); tracker.addProvider(new RybbitProvider()); trackerRef.current = tracker; initialized = true; setIsReady(true); } }, [op]); return trackerRef.current || getTracker(); }