refactor(main): enhance logging, streamline comments, and improve code clarity in bootstrap function
This commit is contained in:
parent
87168dffd8
commit
1cebd0ba7b
62
src/main.ts
62
src/main.ts
@ -1,60 +1,70 @@
|
||||
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) },
|
||||
"*"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user