From 974c7afcae60b82aa7930a4ea03c3d450c317a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr> Date: Sat, 30 May 2020 19:08:53 +0200 Subject: [PATCH] [ivette] restart last command on reload --- ivette/src/dome/src/main/dome.js | 14 +++++++++++--- ivette/src/dome/src/renderer/dome.js | 2 +- ivette/src/renderer/Controller.tsx | 22 ++++++++++++++++++---- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/ivette/src/dome/src/main/dome.js b/ivette/src/dome/src/main/dome.js index c1f1452eb93..1385eb6bc5e 100644 --- a/ivette/src/dome/src/main/dome.js +++ b/ivette/src/dome/src/main/dome.js @@ -196,6 +196,7 @@ function navigateURL( event , url ) { // -------------------------------------------------------------------------- const windowsHandle = {} ; // Prevent live windows to be garbage collected +const windowsReload = {} ; // Reloaded windows function createBrowserWindow( config, isMain=true ) { @@ -226,7 +227,8 @@ function createBrowserWindow( config, isMain=true ) } const theWindow = new BrowserWindow( options ); - + const wid = theWindow.id; + // Load the index.html of the app. if (DEVEL || LOCAL) process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'; @@ -249,7 +251,14 @@ function createBrowserWindow( config, isMain=true ) // URL Navigation theWindow.webContents.on('will-navigate', navigateURL ); theWindow.webContents.on('did-navigate-in-page', navigateURL ); - theWindow.webContents.on('did-finish-load', () => broadcast('dome.ipc.reload')); + theWindow.webContents.on('did-finish-load', () => { + const isLoaded = windowsReload[wid]; + if (!isLoaded) { + windowsReload[wid] = true; + } else { + broadcast('dome.ipc.reload'); + } + }); // Emitted when the window want's to close. theWindow.on('close', (evt) => { @@ -270,7 +279,6 @@ function createBrowserWindow( config, isMain=true ) } // Keep the window reference to prevent destruction - const wid = theWindow.id ; windowsHandle[ wid ] = theWindow ; // Emitted when the window is closed. diff --git a/ivette/src/dome/src/renderer/dome.js b/ivette/src/dome/src/renderer/dome.js index 1676de2c194..6fb25c3702f 100644 --- a/ivette/src/dome/src/renderer/dome.js +++ b/ivette/src/dome/src/renderer/dome.js @@ -480,7 +480,7 @@ ipcRenderer.on('dome.ipc.settings.update',(sender,patches) => { /** @summary Get value from local window (persistent) settings. - @param {string} key User's Setting Key (`'dome.*'` are reserved keys) + @param {string} [key] - User's Setting Key (`'dome.*'` are reserved keys) @param {any} [defaultValue] - default value if the key is not present @return {any} associated value of object or `undefined`. @description diff --git a/ivette/src/renderer/Controller.tsx b/ivette/src/renderer/Controller.tsx index 733513202d9..45e5f4d7ab3 100644 --- a/ivette/src/renderer/Controller.tsx +++ b/ivette/src/renderer/Controller.tsx @@ -76,6 +76,10 @@ function buildServerConfig(argv: string[], cwd?: string) { }; } +function buildServerCommand(cmd: string) { + return buildServerConfig(cmd.trim().split(/[ \t\n]+/)); +} + function insertConfig(hs: string[], cfg: Server.Configuration) { const cmd = dumpServerConfig(cfg).trim(); const newhs = @@ -90,8 +94,20 @@ function insertConfig(hs: string[], cfg: Server.Configuration) { // --- Start Server on Command // -------------------------------------------------------------------------- +let reloadCommand: string | undefined; + +Dome.onReload(() => { + const hst = Dome.getWindowSetting('Controller.history'); + reloadCommand = Array.isArray(hst) && hst[0]; +}); + Dome.onCommand((argv: string[], cwd: string) => { - const cfg = buildServerConfig(argv, cwd); + let cfg; + if (reloadCommand) { + cfg = buildServerCommand(reloadCommand); + } else { + cfg = buildServerConfig(argv, cwd); + } Server.setConfig(cfg); Server.start(); }); @@ -189,9 +205,7 @@ const RenderConsole = () => { }; const doExec = () => { - const cmd = editor.getValue().trim(); - const argv = cmd.split(/[ \t\n]+/); - const cfg = buildServerConfig(argv); + const cfg = buildServerCommand(editor.getValue()); const hst = insertConfig(history, cfg); setHistory(hst); setCursor(-1); -- GitLab