diff --git a/src/main.ts b/src/main.ts index f89f41a..c449898 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,61 +1,71 @@ -import Services from './services/service'; -import { Router } from './router/index'; -import './components/header/Header'; -import './App'; -import { IframeController } from './services/iframe-controller.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 (Multi-Worker Architecture)..."); + // Optionnel : Désactiver les logs verbeux en prod si nécessaire + console.log( + "🚀 Démarrage de l'application 4NK (Multi-Worker Architecture)..." + ); try { - // 1. Initialisation des Services (Proxy vers Core & Network Workers) - // Cela va lancer les workers en arrière-plan + // 1. Initialisation des Services & Workers const services = await Services.getInstance(); - // Injection du Header - const headerSlot = document.getElementById('header-slot'); + // Injection du Header (Si le DOM est prêt) + const headerSlot = document.getElementById("header-slot"); if (headerSlot) { - headerSlot.innerHTML = ''; + headerSlot.innerHTML = ""; } - // 2. Vérification / Création de l'appareil (via le Worker) + // 2. Gestion Appareil (Device) const device = await services.getDeviceFromDatabase(); if (!device) { - console.log('✨ Nouvel appareil détecté, création en cours via Worker...'); + console.log( + "✨ Nouvel appareil détecté, création en cours via Worker..." + ); await services.createNewDevice(); } else { console.log("Restauration de l'appareil..."); await services.restoreDevice(device); } - // 3. Initialisation du contrôleur d'Iframe (Reste sur le Main Thread pour écouter window) + // 3. Iframe Controller await IframeController.init(); - // 4. Restauration des données + // 4. Restauration des données et secrets await services.restoreProcessesFromDB(); - - if (services.restoreSecretsFromDB) { - await services.restoreSecretsFromDB(); - } else { - console.warn("restoreSecretsFromDB non implémenté dans le proxy Services"); - } - + await services.restoreSecretsFromDB(); // 5. Gestion du Routing const isIframe = window.self !== window.top; const isPaired = await services.isPaired(); if (isPaired && !isIframe) { - console.log('✅ Mode Standalone & Appairé : Redirection vers Process.'); - window.history.replaceState({}, '', 'process'); + console.log("✅ Mode Standalone & Appairé : Redirection vers Process."); + // Nettoyage de l'URL pour éviter de recharger sur une route intermédiaire + window.history.replaceState({}, "", "process"); Router.handleLocation(); } else { - console.log(isIframe ? '📡 Mode Iframe détecté : Attente API.' : '🆕 Non appairé : Démarrage sur Home.'); + console.log( + isIframe + ? "📡 Mode Iframe détecté : Prêt." + : "🆕 Non appairé : Démarrage sur Home." + ); + // En mode Iframe, on laisse souvent le parent piloter ou on charge la route par défaut Router.init(); } } catch (error) { - console.error('💥 Erreur critique au démarrage :', error); + console.error("💥 Erreur critique au démarrage :", error); + if (window.self !== window.top) { + window.parent.postMessage( + { type: "4NK_ERROR", error: String(error) }, + "*" + ); + } } } -bootstrap(); \ No newline at end of file +bootstrap();