#!/usr/bin/env node
/**
 * Rychlá kontrola, jestli je všechno hotové. Nic neotevírá na dlouho, jen se podívá.
 *   node scripts/stav.mjs
 *
 * Claude tímhle ověřuje, když uživatel napíše „hotovo" po přihlášení.
 *
 * Konec s kódem 0 = připraveno generovat.  Kód 1 = ještě něco chybí.
 * Značky: PRIPRAVENO / CHYBI_PLAYWRIGHT / CHYBI_PRIHLASENI
 */
import fs from 'node:fs';
import {
  najdiPlaywright, otevriProhlizec, jePrihlasen, GEMINI,
  PROFIL_PROHLIZECE, PROHLIZECE, vyberProhlizec, nactiNastaveni, vychoziVystup
} from './lib/spolecne.mjs';

// 1) Playwright
try { najdiPlaywright(); }
catch (e) {
  console.error('CHYBI_PLAYWRIGHT: spusť node scripts/nastaveni.mjs');
  process.exit(1);
}

const klic = vyberProhlizec();
console.log(`Prohlížeč: ${PROHLIZECE[klic].nazev}` + (nactiNastaveni().prohlizec ? ' (zvolený)' : ' (automaticky)'));
console.log(`Profil:    ${PROFIL_PROHLIZECE}`);
console.log(`Obrázky:   ${vychoziVystup()}`);

// 2) Profil vůbec existuje?
if (!fs.existsSync(PROFIL_PROHLIZECE)) {
  console.error('\nCHYBI_PRIHLASENI: profil ještě neexistuje — spusť node scripts/prihlaseni.mjs');
  process.exit(1);
}

// 3) Je v profilu platné přihlášení? Otevřeme na chvilku a hned zavřeme.
const ctx = await otevriProhlizec({ viditelny: true, prohlizec: klic });
const page = ctx.pages()[0] ?? (await ctx.newPage());
try {
  await page.goto(GEMINI, { waitUntil: 'domcontentloaded', timeout: 60000 });
  // Krátká tolerance, ať se stránka stihne rozjet.
  let prihlasen = false;
  for (let i = 0; i < 8 && !prihlasen; i++) {
    prihlasen = await jePrihlasen(page);
    if (!prihlasen) await page.waitForTimeout(1500);
  }
  if (prihlasen) {
    console.log('\nPRIPRAVENO: přihlášeno, můžeš generovat.');
  } else {
    console.error('\nCHYBI_PRIHLASENI: v profilu není platné přihlášení.');
    console.error('Spusť node scripts/prihlaseni.mjs a přihlas se v otevřeném okně.');
    process.exitCode = 1;
  }
} catch (e) {
  console.error('\nCHYBA: ' + (e?.message || e));
  process.exitCode = 1;
} finally {
  await ctx.close().catch(() => {});
}
