2017-10-15 21:39:52 +02:00
|
|
|
import { ipcMain, BrowserWindow } from 'electron';
|
2019-04-18 18:03:17 +01:00
|
|
|
let electronSocket;
|
2017-10-07 01:32:19 +02:00
|
|
|
|
2018-09-26 01:31:53 +02:00
|
|
|
export = (socket: SocketIO.Socket) => {
|
2019-04-18 18:03:17 +01:00
|
|
|
electronSocket = socket;
|
2017-10-07 01:32:19 +02:00
|
|
|
socket.on('registerIpcMainChannel', (channel) => {
|
|
|
|
|
ipcMain.on(channel, (event, args) => {
|
2019-04-18 18:03:17 +01:00
|
|
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
2017-10-07 01:32:19 +02:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-10-21 04:37:01 +02:00
|
|
|
socket.on('registerSyncIpcMainChannel', (channel) => {
|
|
|
|
|
ipcMain.on(channel, (event, args) => {
|
2019-01-04 03:27:12 +01:00
|
|
|
const x = <any>socket;
|
2017-10-21 04:37:01 +02:00
|
|
|
x.removeAllListeners(channel + 'Sync');
|
|
|
|
|
socket.on(channel + 'Sync', (result) => {
|
|
|
|
|
event.returnValue = result;
|
|
|
|
|
});
|
|
|
|
|
|
2019-04-18 18:03:17 +01:00
|
|
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
2017-10-21 04:37:01 +02:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-10-07 01:32:19 +02:00
|
|
|
socket.on('registerOnceIpcMainChannel', (channel) => {
|
|
|
|
|
ipcMain.once(channel, (event, args) => {
|
2019-04-18 18:03:17 +01:00
|
|
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
2017-10-07 01:32:19 +02:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
socket.on('removeAllListenersIpcMainChannel', (channel) => {
|
|
|
|
|
ipcMain.removeAllListeners(channel);
|
|
|
|
|
});
|
|
|
|
|
|
2017-10-15 21:39:52 +02:00
|
|
|
socket.on('sendToIpcRenderer', (browserWindow, channel, ...data) => {
|
|
|
|
|
const window = BrowserWindow.fromId(browserWindow.id);
|
2019-01-04 03:27:12 +01:00
|
|
|
|
2017-10-07 01:32:19 +02:00
|
|
|
if (window) {
|
2017-10-23 19:08:10 +02:00
|
|
|
window.webContents.send(channel, ...data);
|
2017-10-07 01:32:19 +02:00
|
|
|
}
|
|
|
|
|
});
|
2019-01-04 03:27:12 +01:00
|
|
|
};
|