import '@fontsource/montserrat/400.css';
import '@fontsource/montserrat/500.css';
import '@fontsource/montserrat/600.css';
import '@fontsource/montserrat/700.css';
import './stile/base.css';

import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { App } from './App.tsx';
import { avviaSessione, leggiErroreDiRitorno } from './dati/accesso.ts';

const radice = document.getElementById('root');
if (!radice) throw new Error('Manca #root in index.html');
const root = createRoot(radice);

/**
 * Prima si completa la sessione (anche il ritorno da Google), poi parte l'app con il router:
 * nessun reindirizzamento può perdere il codice di login (brief, parte 7).
 */
async function avvia() {
  const respinto = leggiErroreDiRitorno();
  const { sessione, offline } = await avviaSessione();
  root.render(
    <StrictMode>
      <App sessioneIniziale={sessione} offlineAllAvvio={offline} respinto={respinto} />
    </StrictMode>,
  );
}

avvia().catch((errore: unknown) => {
  console.error(errore);
  root.render(<p>Flusso clienti non è partito. Ricarica la pagina; se si ripete, avvisa chi coordina.</p>);
});
