events work in electron IPC

This commit is contained in:
Jan Prochazka
2021-12-25 10:52:48 +01:00
parent 6dcbb5e308
commit 185cfab5d8
13 changed files with 68 additions and 40 deletions

View File

@@ -29,7 +29,11 @@ class DatastoreProxy {
async ensureSubprocess() {
if (!this.subprocess) {
this.subprocess = fork(process.argv[1], ['--start-process', 'jslDatastoreProcess', ...process.argv.slice(3)]);
this.subprocess = fork(global['API_PACKAGE'] || process.argv[1], [
'--start-process',
'jslDatastoreProcess',
...process.argv.slice(3),
]);
this.subprocess.on('message', message => {
// @ts-ignore

View File

@@ -1,35 +1,29 @@
let res = null;
let sseResponse = null;
let electronSender = null;
let init = '';
module.exports = {
set(value) {
res = value;
setSseResponse(value) {
sseResponse = value;
},
setElectronSender(value) {
electronSender = value;
},
// get() {
// return socket;
// },
emit(message, data) {
if (res) {
if (electronSender) {
electronSender.send(message, data == null ? null : data);
} else if (sseResponse) {
if (init) {
res.write(init);
sseResponse.write(init);
init = '';
}
res.write(`event: ${message}\ndata: ${JSON.stringify(data == null ? null : data)}\n\n`);
sseResponse.write(`event: ${message}\ndata: ${JSON.stringify(data == null ? null : data)}\n\n`);
} else {
init += res;
init += sseResponse;
}
// console.log('EMIT:', message, data);
// socket.emit(message, data);
},
emitChanged(key) {
this.emit('clean-cache', key);
this.emit(key);
// console.log('EMIT_CHANGED:', key);
// socket.emit('clean-cache', key);
// socket.emit(key);
// socket.send(key, 'clean-cache');
// socket.send(null, key);
},
};

View File

@@ -28,7 +28,7 @@ module.exports = function useController(app, electron, route, controller) {
if (electron) {
if (meta === true) {
const handler = `${route.substring(1)}-${_.kebabCase(key)}`;
console.log('REGISTERING HANDLER', handler);
// console.log('REGISTERING HANDLER', handler);
electron.ipcMain.handle(handler, async (event, args) => {
const data = await controller[key](args);
return data;