// BikeForge — schlankes Launch-Funnel-Tracking

(function initBikeAnalytics() {
  const sessionKey = "bf_session_id";

  function getSessionId() {
    try {
      const existing = localStorage.getItem(sessionKey);
      if (existing) return existing;
      const created = `bf_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
      localStorage.setItem(sessionKey, created);
      return created;
    } catch {
      return `bf_${Date.now()}`;
    }
  }

  function compactPayload(payload) {
    return JSON.parse(JSON.stringify(payload || {}, (_key, value) => {
      if (typeof value === "string" && value.length > 300) return `${value.slice(0, 297)}...`;
      return value;
    }));
  }

  function track(name, payload = {}) {
    const event = {
      name,
      payload: compactPayload(payload),
      session_id: getSessionId(),
      path: window.location.pathname,
      ts: Date.now(),
    };

    try {
      const body = JSON.stringify(event);
      if (navigator.sendBeacon) {
        const blob = new Blob([body], { type: "application/json" });
        if (navigator.sendBeacon("/api/events", blob)) return;
      }
      fetch("/api/events", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body,
        keepalive: true,
      }).catch(() => {});
    } catch {
      // Tracking darf nie Produktfunktionen blockieren.
    }
  }

  window.BikeAnalytics = {
    track,
    sessionId: getSessionId(),
  };
})();
