From 30b054dbec45bef46e0947608efd9eb55e48ce63 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Sun, 24 Apr 2022 13:20:49 +0200 Subject: [PATCH] fixed object destroyed error --- app/src/electron.js | 3 ++- packages/api/src/main.js | 4 ++-- packages/api/src/utility/socket.js | 20 +++++++++++++++----- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index b5160ae18..9526f373f 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -336,10 +336,10 @@ function createWindow() { // ) // ); const main = api.getMainModule(); - main.initializeElectronSender(mainWindow.webContents); main.useAllControllers(null, electron); apiLoaded = true; } + main.setElectronSender(mainWindow.webContents); loadMainWindow(); @@ -349,6 +349,7 @@ function createWindow() { // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. mainWindow = null; + main.setElectronSender(null); }); } diff --git a/packages/api/src/main.js b/packages/api/src/main.js index 28914d152..ead1c4350 100644 --- a/packages/api/src/main.js +++ b/packages/api/src/main.js @@ -155,8 +155,8 @@ function useAllControllers(app, electron) { useController(app, electron, '/apps', apps); } -function initializeElectronSender(electronSender) { +function setElectronSender(electronSender) { socket.setElectronSender(electronSender); } -module.exports = { start, useAllControllers, initializeElectronSender, configController: config }; +module.exports = { start, useAllControllers, setElectronSender, configController: config }; diff --git a/packages/api/src/utility/socket.js b/packages/api/src/utility/socket.js index ccce6d53d..34723ade1 100644 --- a/packages/api/src/utility/socket.js +++ b/packages/api/src/utility/socket.js @@ -1,6 +1,6 @@ let sseResponse = null; let electronSender = null; -let init = ''; +let init = []; module.exports = { setSseResponse(value) { @@ -12,15 +12,25 @@ module.exports = { }, emit(message, data) { if (electronSender) { + if (init.length > 0) { + for (const item of init) { + electronSender.send(item.message, item.data == null ? null : item.data); + } + init = []; + } electronSender.send(message, data == null ? null : data); } else if (sseResponse) { - if (init) { - sseResponse.write(init); - init = ''; + if (init.length > 0) { + for (const item of init) { + sseResponse.write( + `event: ${item.message}\ndata: ${JSON.stringify(item.data == null ? null : item.data)}\n\n` + ); + } + init = []; } sseResponse.write(`event: ${message}\ndata: ${JSON.stringify(data == null ? null : data)}\n\n`); } else { - init += sseResponse; + init.push([{ message, data }]); } }, emitChanged(key) {