67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
import Database from './services/database.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...");
|
|
|
|
try {
|
|
// 1. Initialisation de la Base de données
|
|
const db = await Database.getInstance();
|
|
db.registerServiceWorker('/database.worker.js');
|
|
|
|
// 2. Initialisation des Services (WASM, Sockets...)
|
|
const services = await Services.getInstance();
|
|
|
|
// Injection du Header dans le slot prévu dans index.html
|
|
const headerSlot = document.getElementById('header-slot');
|
|
if (headerSlot) {
|
|
headerSlot.innerHTML = '<app-header></app-header>';
|
|
}
|
|
|
|
// Vérification basique de l'appareil (logique reprise de ton ancien router.ts)
|
|
const device = await services.getDeviceFromDatabase();
|
|
if (!device) {
|
|
console.log('✨ Nouvel appareil détecté, création en cours...');
|
|
await services.createNewDevice();
|
|
} else {
|
|
console.log("Restauration de l'appareil...");
|
|
services.restoreDevice(device);
|
|
}
|
|
|
|
// Initialisation du contrôleur d'Iframe (API listeners)
|
|
await IframeController.init();
|
|
|
|
// 3. Restauration des données
|
|
await services.restoreProcessesFromDB();
|
|
await services.restoreSecretsFromDB();
|
|
|
|
// 4. Connexion réseau
|
|
await services.connectAllRelays();
|
|
|
|
// 5. Démarrage du Routeur (Affichage de la page)
|
|
const isIframe = window.self !== window.top;
|
|
|
|
// On redirige vers 'process' SEULEMENT si on est appairé ET qu'on n'est PAS dans une iframe
|
|
if (services.isPaired() && !isIframe) {
|
|
console.log('✅ Mode Standalone & Appairé : Redirection vers Process.');
|
|
window.history.replaceState({}, '', 'process');
|
|
Router.handleLocation();
|
|
} else {
|
|
// Cas 1 : Pas appairé
|
|
// Cas 2 : Mode Iframe (même si appairé, on reste sur Home pour attendre le parent)
|
|
console.log(isIframe ? '📡 Mode Iframe détecté : Démarrage sur Home pour attente API.' : '🆕 Non appairé : Démarrage sur Home.');
|
|
Router.init();
|
|
}
|
|
} catch (error) {
|
|
console.error('💥 Erreur critique au démarrage :', error);
|
|
}
|
|
}
|
|
|
|
// Lancement
|
|
bootstrap();
|
|
|