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();