// store.jsx — shared persistence layer between the customer app and the control panel.

const LAZ_KEY = 'laz_store_v1';
const PUBLISH_URL = 'https://cafelaz-publish.juliancrovs.workers.dev';

function loadOverrides() {
  // Try remote overrides.json first (sync XHR, runs before React)
  try {
    const xhr = new XMLHttpRequest();
    xhr.open('GET', '/overrides.json', false);
    xhr.send();
    if (xhr.status === 200) {
      const remote = JSON.parse(xhr.responseText);
      if (remote && Object.keys(remote).length > 0) return remote;
    }
  } catch (_) {}
  // Fall back to localStorage (admin drafts / offline)
  try { return JSON.parse(localStorage.getItem(LAZ_KEY)) || {}; }
  catch (_) { return {}; }
}
function saveOverrides(o) {
  try { localStorage.setItem(LAZ_KEY, JSON.stringify(o)); }
  catch (_) { alert('No se pudo guardar (almacenamiento lleno). Probá con menos fotos o más livianas.'); }
}
function resetOverrides() { localStorage.removeItem(LAZ_KEY); }

// Downscale + compress an image File to a small data URL.
function fileToDataURL(file, maxW = 720, quality = 0.74) {
  return new Promise((resolve, reject) => {
    const img = new Image();
    const url = URL.createObjectURL(file);
    img.onload = () => {
      URL.revokeObjectURL(url);
      const scale = Math.min(1, maxW / img.width);
      const w = Math.round(img.width * scale), h = Math.round(img.height * scale);
      const c = document.createElement('canvas');
      c.width = w; c.height = h;
      c.getContext('2d').drawImage(img, 0, 0, w, h);
      resolve(c.toDataURL('image/jpeg', quality));
    };
    img.onerror = reject;
    img.src = url;
  });
}

async function publishToGitHub(data) {
  const res = await fetch(PUBLISH_URL, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(data),
  });
  if (!res.ok) {
    const err = await res.json().catch(() => ({}));
    throw new Error(err.error || `Error ${res.status}`);
  }
  return true;
}

Object.assign(window, { LAZ_KEY, loadOverrides, saveOverrides, resetOverrides, fileToDataURL, publishToGitHub });
