74 lines
1.7 KiB
JavaScript
74 lines
1.7 KiB
JavaScript
/* global window */
|
|
|
|
const { ipcRenderer: ipc } = require('electron');
|
|
|
|
exports.installGetter = function installGetter(name, functionName) {
|
|
ipc.on(`get-${name}`, async () => {
|
|
const getFn = window.Events[functionName];
|
|
if (!getFn) {
|
|
ipc.send(
|
|
`get-success-${name}`,
|
|
`installGetter: ${functionName} not found for event ${name}`
|
|
);
|
|
return;
|
|
}
|
|
try {
|
|
ipc.send(`get-success-${name}`, null, await getFn());
|
|
} catch (error) {
|
|
ipc.send(
|
|
`get-success-${name}`,
|
|
error && error.stack ? error.stack : error
|
|
);
|
|
}
|
|
});
|
|
};
|
|
|
|
exports.installSetter = function installSetter(name, functionName) {
|
|
ipc.on(`set-${name}`, async (_event, value) => {
|
|
const setFn = window.Events[functionName];
|
|
if (!setFn) {
|
|
ipc.send(
|
|
`set-success-${name}`,
|
|
`installSetter: ${functionName} not found for event ${name}`
|
|
);
|
|
return;
|
|
}
|
|
try {
|
|
await setFn(value);
|
|
ipc.send(`set-success-${name}`);
|
|
} catch (error) {
|
|
ipc.send(
|
|
`set-success-${name}`,
|
|
error && error.stack ? error.stack : error
|
|
);
|
|
}
|
|
});
|
|
};
|
|
|
|
exports.makeGetter = function makeGetter(name) {
|
|
return () =>
|
|
new Promise((resolve, reject) => {
|
|
ipc.once(`get-success-${name}`, (event, error, value) => {
|
|
if (error) {
|
|
return reject(error);
|
|
}
|
|
|
|
return resolve(value);
|
|
});
|
|
ipc.send(`get-${name}`);
|
|
});
|
|
};
|
|
|
|
exports.makeSetter = function makeSetter(name) {
|
|
return value =>
|
|
new Promise((resolve, reject) => {
|
|
ipc.once(`set-success-${name}`, (event, error) => {
|
|
if (error) {
|
|
return reject(error);
|
|
}
|
|
|
|
return resolve();
|
|
});
|
|
ipc.send(`set-${name}`, value);
|
|
});
|
|
};
|