// Privacy-friendly analytics (Plausible) — bez cookies, bez osobních údajů.
// Zapnuté pouze s explicitním consent.analyticsOptIn = true.

const PLAUSIBLE_DOMAIN = (typeof window !== 'undefined' && window.PANDICKA_PLAUSIBLE_DOMAIN) || 'pandicka.cz';
const PLAUSIBLE_API = 'https://plausible.io/api/event';

function hasAnalyticsConsent() {
  try {
    const raw = localStorage.getItem('pandicka-consent');
    if (!raw) return false;
    const c = JSON.parse(raw);
    return !!c?.analyticsOptIn;
  } catch { return false; }
}

function trackEvent(name, props = {}) {
  if (!hasAnalyticsConsent()) return;
  try {
    const payload = {
      name,
      url: location.href,
      domain: PLAUSIBLE_DOMAIN,
      props,
    };
    // keepalive, takže event přežije navigaci
    fetch(PLAUSIBLE_API, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload),
      keepalive: true,
      mode: 'no-cors',
    }).catch(() => {});
  } catch {}
}

function trackPageview(screen) {
  trackEvent('pageview', { screen });
}

function trackTaskAttempt({ taskId, categoryId, correct, attempts }) {
  trackEvent('task_attempt', { taskId, categoryId, correct: String(!!correct), attempts: String(attempts || 0) });
}

function trackTaskComplete({ taskId, categoryId, xp, coins }) {
  trackEvent('task_complete', { taskId, categoryId, xp: String(xp || 0), coins: String(coins || 0) });
}

Object.assign(window, { trackEvent, trackPageview, trackTaskAttempt, trackTaskComplete, hasAnalyticsConsent });
