"use client";

/**
 * Отправляет impression событие в Google Analytics для AB теста
 * 
 * Используется в FunnelRuntime когда экран с AB тестом становится видимым
 * Автоматически предотвращает дубликаты через sessionStorage
 * 
 * @param flag - название флага из Unleash
 * @param variant - вариант который получил пользователь
 */
export function sendUnleashImpression(flag: string, variant: string | undefined) {
  if (process.env.NODE_ENV === "development") {
    console.log("[Unleash Impression] Called with:", { flag, variant });
  }

  // Проверяем что вариант валидный
  if (!variant || variant === "disabled") {
    if (process.env.NODE_ENV === "development") {
      console.log("[Unleash Impression] Skipped: invalid variant");
    }
    return;
  }

  // Проверяем что браузерное окружение
  if (typeof window === "undefined") {
    if (process.env.NODE_ENV === "development") {
      console.log("[Unleash Impression] Skipped: not browser environment");
    }
    return;
  }

  // Проверяем не отправляли ли уже это событие в этой сессии
  const storageKey = `unleash_impression_${flag}_${variant}`;
  const alreadySent = sessionStorage.getItem(storageKey);

  if (alreadySent) {
    // Уже отправляли - пропускаем
    if (process.env.NODE_ENV === "development") {
      console.log("[Unleash Impression] Skipped (already sent):", {
        feature: flag,
        variant: variant,
      });
    }
    return;
  }

  // Проверяем наличие gtag
  if (!window.gtag) {
    console.warn("[Unleash Impression] ❌ Google Analytics not available (window.gtag is undefined)");
    console.warn("[Unleash Impression] Check that GoogleAnalytics component is loaded with measurementId");
    return;
  }

  // Отправляем событие в Google Analytics
  window.gtag("event", "experiment_impression", {
    app_name: "witlab-funnel",
    feature: flag,
    treatment: variant,
  });

  // Помечаем что отправили
  sessionStorage.setItem(storageKey, "true");

  // Debug в development
  if (process.env.NODE_ENV === "development") {
    console.log("[Unleash Impression] ✅ Sent successfully:", {
      feature: flag,
      variant: variant,
    });
  }
}

/**
 * Очищает историю отправленных impression (для тестирования)
 * В production обычно не используется
 */
export function clearUnleashImpressions() {
  if (typeof window === "undefined") {
    return;
  }

  Object.keys(sessionStorage)
    .filter(key => key.startsWith("unleash_impression_"))
    .forEach(key => sessionStorage.removeItem(key));

  if (process.env.NODE_ENV === "development") {
    console.log("[Unleash Impression] Cleared all impression history");
  }
}
