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,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 = '<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();
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();
bootstrap();