You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.6 KiB
59 lines
1.6 KiB
const { contextBridge, ipcRenderer } = require('electron');
|
|
// White-listed channels.
|
|
const ipc = {
|
|
'render': {
|
|
// From render to main.
|
|
'send': [
|
|
'close',
|
|
'maximize',
|
|
'minimize',
|
|
'login',
|
|
'register',
|
|
],
|
|
// From main to render.
|
|
'receive': [
|
|
'close',
|
|
'maximize',
|
|
'minimize',
|
|
'login',
|
|
'register',
|
|
],
|
|
// From render to main and back again.
|
|
'sendReceive':[
|
|
'close',
|
|
'maximize',
|
|
'minimize',
|
|
'login',
|
|
'register',
|
|
]
|
|
}
|
|
};
|
|
|
|
// Exposed protected methods in the render process.
|
|
contextBridge.exposeInMainWorld(
|
|
// Allowed 'ipcRenderer' methods.
|
|
'ipcRender', {
|
|
// From render to main.
|
|
send: (channel, args) => {
|
|
let validChannels = ipc.render.send;
|
|
if (validChannels.includes(channel)) {
|
|
ipcRenderer.send(channel, args);
|
|
}
|
|
},
|
|
// From main to render.
|
|
receive: (channel, listener) => {
|
|
let validChannels = ipc.render.receive;
|
|
if (validChannels.includes(channel)) {
|
|
// Deliberately strip event as it includes `sender`.
|
|
ipcRenderer.on(channel, (event, ...args) => listener(...args));
|
|
}
|
|
},
|
|
// From render to main and back again.
|
|
invoke: (channel, args) => {
|
|
let validChannels = ipc.render.sendReceive;
|
|
if (validChannels.includes(channel)) {
|
|
return ipcRenderer.invoke(channel, args);
|
|
}
|
|
}
|
|
}
|
|
); |