27 lines
1009 B
JavaScript
27 lines
1009 B
JavaScript
const { ipcRenderer } = require('electron');
|
|
|
|
// Messages must originate from this origin
|
|
const emberAppOrigin = window.location.origin;
|
|
|
|
process.once('loaded', () => {
|
|
/**
|
|
* Ember-land has no access to the renderer or node modules, and thus
|
|
* cannot call into the main process or make invocations directly.
|
|
* In order to communicate with the main process, the Ember app uses
|
|
* the `postMessage` interface to send messages to its browser window.
|
|
* These messages include message ports with which to receive responses from
|
|
* the main process.
|
|
*
|
|
* This preload script simply wires up the forwarding of
|
|
* messages received on the window and responses received from main.
|
|
*/
|
|
window.addEventListener('message', async function (event) {
|
|
if (event.origin !== emberAppOrigin) return;
|
|
const { method, payload } = event?.data ?? {};
|
|
if (method) {
|
|
const response = await ipcRenderer.invoke(method, payload);
|
|
event.ports[0].postMessage(response);
|
|
}
|
|
});
|
|
});
|