main process: Don't send IPC to event.sender if it is destroyed

This commit is contained in:
Scott Nonnenberg 2018-12-10 13:48:51 -08:00
parent 3851bf351f
commit dee91b6772

22
main.js
View file

@ -950,9 +950,14 @@ function getDataFromMainWindow(name, callback) {
function installSettingsGetter(name) {
ipc.on(`get-${name}`, event => {
if (mainWindow && mainWindow.webContents) {
getDataFromMainWindow(name, (error, value) =>
event.sender.send(`get-success-${name}`, error, value)
);
getDataFromMainWindow(name, (error, value) => {
const contents = event.sender;
if (contents.isDestroyed()) {
return;
}
contents.send(`get-success-${name}`, error, value);
});
}
});
}
@ -960,9 +965,14 @@ function installSettingsGetter(name) {
function installSettingsSetter(name) {
ipc.on(`set-${name}`, (event, value) => {
if (mainWindow && mainWindow.webContents) {
ipc.once(`set-success-${name}`, (_event, error) =>
event.sender.send(`set-success-${name}`, error)
);
ipc.once(`set-success-${name}`, (_event, error) => {
const contents = event.sender;
if (contents.isDestroyed()) {
return;
}
contents.send(`set-success-${name}`, error);
});
mainWindow.webContents.send(`set-${name}`, value);
}
});