From fd7e362cbf4ef06d6b7ea00fe9edae90631b165c Mon Sep 17 00:00:00 2001 From: Kirill Shumilov Date: Fri, 19 Oct 2018 17:06:53 +0300 Subject: [PATCH] fix(xod-client-electron): do not send data through IPC to the renderer if it was destroyed --- packages/xod-client-electron/src/app/subscribeIpc.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/xod-client-electron/src/app/subscribeIpc.js b/packages/xod-client-electron/src/app/subscribeIpc.js index 89e84ad0..890cab33 100644 --- a/packages/xod-client-electron/src/app/subscribeIpc.js +++ b/packages/xod-client-electron/src/app/subscribeIpc.js @@ -6,7 +6,17 @@ import { errorToPlainObject } from './utils'; export default (fn, eventName) => { const STATES = getAllStatesForEvent(eventName); ipcMain.on(STATES.BEGIN, (event, payload) => { - const onProgress = data => event.sender.send(STATES.PROCESS, data); + // Prevent sending data to the closed window + // because it produces an exception + if (event.sender.isDestroyed()) return; + + const onProgress = data => { + // Prevent sending data to the closed window + // because it produces an exception + if (event.sender.isDestroyed()) return; + + event.sender.send(STATES.PROCESS, data); + }; fn(event, payload, onProgress) .then(res => event.sender.send(STATES.COMPLETE, res))