From bc2d5a09403de47651531ecf621ee768098f138d Mon Sep 17 00:00:00 2001 From: Benoit Date: Fri, 19 Jun 2026 13:31:38 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20attendre=20que=20le=20renderer=20soit=20?= =?UTF-8?q?pr=C3=AAt=20avant=20d'envoyer=20events?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problème : mainWindow.webContents.send() appelé avant que la page soit chargée → Events perdus, interface ne se met pas à jour Solution : - Nouveau flag rendererReady - Event 'did-finish-load' pour détecter quand le renderer est prêt - Tous les webContents.send() vérifient maintenant rendererReady - Envoi de l'état initial du serveur quand interface charge Résultat : Interface reçoit toujours les updates d'état serveur --- electron/main.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/electron/main.js b/electron/main.js index 74e4d68..8bd5986 100644 --- a/electron/main.js +++ b/electron/main.js @@ -14,6 +14,7 @@ let mainWindow = null; let tray = null; let serverProcess = null; let serverStarted = false; +let rendererReady = false; const SERVER_PORT = process.env.PORT || 3000; const SERVER_URL = `http://localhost:${SERVER_PORT}`; @@ -40,6 +41,17 @@ function createWindow() { // Charger l'interface dashboard mainWindow.loadFile(path.join(__dirname, 'ui', 'index.html')); + // Attendre que le renderer soit prêt + mainWindow.webContents.on('did-finish-load', () => { + rendererReady = true; + console.log('✅ Interface chargée'); + + // Envoyer l'état initial du serveur + if (mainWindow) { + mainWindow.webContents.send('server:status', { running: serverStarted }); + } + }); + // DevTools en mode dev if (isDev) { mainWindow.webContents.openDevTools(); @@ -48,6 +60,7 @@ function createWindow() { // Cleanup à la fermeture mainWindow.on('closed', () => { mainWindow = null; + rendererReady = false; }); } @@ -159,7 +172,7 @@ async function startServer() { console.log(isError ? '[Serveur Error]' : '[Serveur]', output); - if (mainWindow) { + if (mainWindow && rendererReady) { mainWindow.webContents.send('server:log', { level: isError ? 'error' : 'info', message: output.trim() @@ -172,7 +185,7 @@ async function startServer() { serverStarted = true; console.log('✅ Serveur démarré (détecté via stderr)'); - if (mainWindow) { + if (mainWindow && rendererReady) { mainWindow.webContents.send('server:status', { running: true }); } @@ -186,7 +199,7 @@ async function startServer() { console.error('❌ Erreur démarrage serveur:', error); serverStarted = false; - if (mainWindow) { + if (mainWindow && rendererReady) { mainWindow.webContents.send('server:status', { running: false, error: error.message }); } @@ -198,7 +211,7 @@ async function startServer() { serverProcess = null; serverStarted = false; - if (mainWindow) { + if (mainWindow && rendererReady) { mainWindow.webContents.send('server:status', { running: false }); }