From 4e7cebe51908f873856702b68270be3b4d19e22e Mon Sep 17 00:00:00 2001 From: rafael-aero Date: Wed, 1 Sep 2021 22:10:44 +0200 Subject: [PATCH] fix closed behaviour --- ElectronNET.Host/api/browserWindows.js | 21 ++++++++------------- ElectronNET.Host/api/browserWindows.ts | 18 ++++++------------ 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/ElectronNET.Host/api/browserWindows.js b/ElectronNET.Host/api/browserWindows.js index 939d655..97612e2 100644 --- a/ElectronNET.Host/api/browserWindows.js +++ b/ElectronNET.Host/api/browserWindows.js @@ -195,6 +195,9 @@ module.exports = (socket, app) => { else { window = new electron_1.BrowserWindow(options); } + + let window_id = window.id; //save here for future use + if (options.proxy) { window.webContents.session.setProxy({ proxyRules: options.proxy }); } @@ -219,19 +222,11 @@ module.exports = (socket, app) => { } }); window.on('closed', (sender) => { - for (let index = 0; index < windows.length; index++) { - const windowItem = windows[index]; - try { - windowItem.id; - } - catch (error) { - if (error.message === 'Object has been destroyed') { - windows.splice(index, 1); - const ids = []; - windows.forEach(x => ids.push(x.id)); - electronSocket.emit('BrowserWindowClosed', ids); - } - } + electronSocket.emit('BrowserWindowClosed', [window_id]); + const toRemove = windows.findIndex(w => w === window); + + if (toRemove >= 0) { + windows.splice(toRemove, 1); } }); if (loadUrl) { diff --git a/ElectronNET.Host/api/browserWindows.ts b/ElectronNET.Host/api/browserWindows.ts index 6c8fedc..f7a9a70 100644 --- a/ElectronNET.Host/api/browserWindows.ts +++ b/ElectronNET.Host/api/browserWindows.ts @@ -229,6 +229,8 @@ export = (socket: Socket, app: Electron.App) => { window = new BrowserWindow(options); } + let window_id = window.id; //save here for future use + if (options.proxy) { window.webContents.session.setProxy({proxyRules: options.proxy}); } @@ -246,19 +248,11 @@ export = (socket: Socket, app: Electron.App) => { }); window.on('closed', (sender) => { - for (let index = 0; index < windows.length; index++) { - const windowItem = windows[index]; - try { - windowItem.id; - } catch (error) { - if (error.message === 'Object has been destroyed') { - windows.splice(index, 1); + electronSocket.emit('BrowserWindowClosed', [window_id]); + const toRemove = windows.findIndex(w => w === window); - const ids = []; - windows.forEach(x => ids.push(x.id)); - electronSocket.emit('BrowserWindowClosed', ids); - } - } + if (toRemove >= 0) { + windows.splice(toRemove, 1); } });