import Database from './services/database.service'; import Services from './services/service'; import { Router } from './router/index'; import './components/header/Header'; import './App'; import { IframeController } from './services/iframe-controller.service'; async function bootstrap() { console.log("🚀 Démarrage de l'application 4NK..."); try { // 1. Initialisation de la Base de données const db = await Database.getInstance(); db.registerServiceWorker('/database.worker.js'); // 2. Initialisation des Services (WASM, Sockets...) const services = await Services.getInstance(); // Injection du Header dans le slot prévu dans index.html const headerSlot = document.getElementById('header-slot'); if (headerSlot) { headerSlot.innerHTML = ''; } // Vérification basique de l'appareil (logique reprise de ton ancien router.ts) const device = await services.getDeviceFromDatabase(); if (!device) { console.log('✨ Nouvel appareil détecté, création en cours...'); await services.createNewDevice(); } else { console.log("Restauration de l'appareil..."); services.restoreDevice(device); } // Initialisation du contrôleur d'Iframe (API listeners) await IframeController.init(); // 3. Restauration des données await services.restoreProcessesFromDB(); await services.restoreSecretsFromDB(); // 4. Connexion réseau await services.connectAllRelays(); // 5. Démarrage du Routeur (Affichage de la page) const isIframe = window.self !== window.top; // On redirige vers 'process' SEULEMENT si on est appairé ET qu'on n'est PAS dans une iframe if (services.isPaired() && !isIframe) { console.log('✅ Mode Standalone & Appairé : Redirection vers Process.'); window.history.replaceState({}, '', 'process'); Router.handleLocation(); } else { // Cas 1 : Pas appairé // Cas 2 : Mode Iframe (même si appairé, on reste sur Home pour attendre le parent) console.log(isIframe ? '📡 Mode Iframe détecté : Démarrage sur Home pour attente API.' : '🆕 Non appairé : Démarrage sur Home.'); Router.init(); } } catch (error) { console.error('💥 Erreur critique au démarrage :', error); } } // Lancement bootstrap();