refactor(main): enhance logging, streamline comments, and improve code clarity in bootstrap function

This commit is contained in:
NicolasCantu 2025-12-03 21:23:56 +01:00
parent 87168dffd8
commit 1cebd0ba7b

View File

@ -1,60 +1,70 @@
import Services from './services/service'; import Services from "./services/service";
import { Router } from './router/index'; import { Router } from "./router/index";
import './components/header/Header'; import "./components/header/Header";
import './App'; import "./App";
import { IframeController } from './services/iframe-controller.service'; import { IframeController } from "./services/iframe-controller.service";
async function bootstrap() { 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 { try {
// 1. Initialisation des Services (Proxy vers Core & Network Workers) // 1. Initialisation des Services & Workers
// Cela va lancer les workers en arrière-plan
const services = await Services.getInstance(); const services = await Services.getInstance();
// Injection du Header // Injection du Header (Si le DOM est prêt)
const headerSlot = document.getElementById('header-slot'); const headerSlot = document.getElementById("header-slot");
if (headerSlot) { if (headerSlot) {
headerSlot.innerHTML = '<app-header></app-header>'; headerSlot.innerHTML = "<app-header></app-header>";
} }
// 2. Vérification / Création de l'appareil (via le Worker) // 2. Gestion Appareil (Device)
const device = await services.getDeviceFromDatabase(); const device = await services.getDeviceFromDatabase();
if (!device) { 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(); await services.createNewDevice();
} else { } else {
console.log("Restauration de l'appareil..."); console.log("Restauration de l'appareil...");
await services.restoreDevice(device); 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(); await IframeController.init();
// 4. Restauration des données // 4. Restauration des données et secrets
await services.restoreProcessesFromDB(); await services.restoreProcessesFromDB();
if (services.restoreSecretsFromDB) {
await services.restoreSecretsFromDB(); await services.restoreSecretsFromDB();
} else {
console.warn("restoreSecretsFromDB non implémenté dans le proxy Services");
}
// 5. Gestion du Routing // 5. Gestion du Routing
const isIframe = window.self !== window.top; const isIframe = window.self !== window.top;
const isPaired = await services.isPaired(); const isPaired = await services.isPaired();
if (isPaired && !isIframe) { if (isPaired && !isIframe) {
console.log('✅ Mode Standalone & Appairé : Redirection vers Process.'); console.log("✅ Mode Standalone & Appairé : Redirection vers Process.");
window.history.replaceState({}, '', 'process'); // Nettoyage de l'URL pour éviter de recharger sur une route intermédiaire
window.history.replaceState({}, "", "process");
Router.handleLocation(); Router.handleLocation();
} else { } 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(); Router.init();
} }
} catch (error) { } 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) },
"*"
);
}
} }
} }