fix: attendre que le renderer soit prêt avant d'envoyer events
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
This commit is contained in:
+17
-4
@@ -14,6 +14,7 @@ let mainWindow = null;
|
|||||||
let tray = null;
|
let tray = null;
|
||||||
let serverProcess = null;
|
let serverProcess = null;
|
||||||
let serverStarted = false;
|
let serverStarted = false;
|
||||||
|
let rendererReady = false;
|
||||||
|
|
||||||
const SERVER_PORT = process.env.PORT || 3000;
|
const SERVER_PORT = process.env.PORT || 3000;
|
||||||
const SERVER_URL = `http://localhost:${SERVER_PORT}`;
|
const SERVER_URL = `http://localhost:${SERVER_PORT}`;
|
||||||
@@ -40,6 +41,17 @@ function createWindow() {
|
|||||||
// Charger l'interface dashboard
|
// Charger l'interface dashboard
|
||||||
mainWindow.loadFile(path.join(__dirname, 'ui', 'index.html'));
|
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
|
// DevTools en mode dev
|
||||||
if (isDev) {
|
if (isDev) {
|
||||||
mainWindow.webContents.openDevTools();
|
mainWindow.webContents.openDevTools();
|
||||||
@@ -48,6 +60,7 @@ function createWindow() {
|
|||||||
// Cleanup à la fermeture
|
// Cleanup à la fermeture
|
||||||
mainWindow.on('closed', () => {
|
mainWindow.on('closed', () => {
|
||||||
mainWindow = null;
|
mainWindow = null;
|
||||||
|
rendererReady = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +172,7 @@ async function startServer() {
|
|||||||
|
|
||||||
console.log(isError ? '[Serveur Error]' : '[Serveur]', output);
|
console.log(isError ? '[Serveur Error]' : '[Serveur]', output);
|
||||||
|
|
||||||
if (mainWindow) {
|
if (mainWindow && rendererReady) {
|
||||||
mainWindow.webContents.send('server:log', {
|
mainWindow.webContents.send('server:log', {
|
||||||
level: isError ? 'error' : 'info',
|
level: isError ? 'error' : 'info',
|
||||||
message: output.trim()
|
message: output.trim()
|
||||||
@@ -172,7 +185,7 @@ async function startServer() {
|
|||||||
serverStarted = true;
|
serverStarted = true;
|
||||||
console.log('✅ Serveur démarré (détecté via stderr)');
|
console.log('✅ Serveur démarré (détecté via stderr)');
|
||||||
|
|
||||||
if (mainWindow) {
|
if (mainWindow && rendererReady) {
|
||||||
mainWindow.webContents.send('server:status', { running: true });
|
mainWindow.webContents.send('server:status', { running: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,7 +199,7 @@ async function startServer() {
|
|||||||
console.error('❌ Erreur démarrage serveur:', error);
|
console.error('❌ Erreur démarrage serveur:', error);
|
||||||
serverStarted = false;
|
serverStarted = false;
|
||||||
|
|
||||||
if (mainWindow) {
|
if (mainWindow && rendererReady) {
|
||||||
mainWindow.webContents.send('server:status', { running: false, error: error.message });
|
mainWindow.webContents.send('server:status', { running: false, error: error.message });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,7 +211,7 @@ async function startServer() {
|
|||||||
serverProcess = null;
|
serverProcess = null;
|
||||||
serverStarted = false;
|
serverStarted = false;
|
||||||
|
|
||||||
if (mainWindow) {
|
if (mainWindow && rendererReady) {
|
||||||
mainWindow.webContents.send('server:status', { running: false });
|
mainWindow.webContents.send('server:status', { running: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user