mirror of
https://github.com/quine-global/hyper.git
synced 2026-01-13 04:28:41 -09:00
* Step 1: move electorn into `app/`. This is to comply with the suggested directory format of `electron-builder`: https://github.com/electron-userland/electron-builder#two-packagejson-structure * Step 2: add build directory with icon files for mac / windows * Step 3: move all development (web) assets into main directory * Step 4: add `build` namespace to dev `package.json` * Step 5: move all dev dependencies into dev file and get rid of old electron packagers in favor of `eletorn-builder` * Step 6: target build inside `app/` as everything else is excluded at build time * Step 7: remove old stuff! * Step 8: update README * turn off asar for `child_pty`
58 lines
1.3 KiB
JavaScript
58 lines
1.3 KiB
JavaScript
export default class Client {
|
|
|
|
constructor () {
|
|
const electron = window.require('electron');
|
|
const EventEmitter = window.require('events');
|
|
this.emitter = new EventEmitter();
|
|
this.ipc = electron.ipcRenderer;
|
|
this.ipcListener = this.ipcListener.bind(this);
|
|
if (window.__rpcId) {
|
|
setTimeout(() => {
|
|
this.id = window.__rpcId;
|
|
this.ipc.on(this.id, this.ipcListener);
|
|
this.emitter.emit('ready');
|
|
}, 0);
|
|
} else {
|
|
this.ipc.on('init', (ev, uid) => {
|
|
// we cache so that if the object
|
|
// gets re-instantiated we don't
|
|
// wait for a `init` event
|
|
window.__rpcId = uid;
|
|
this.id = uid;
|
|
this.ipc.on(uid, this.ipcListener);
|
|
this.emitter.emit('ready');
|
|
});
|
|
}
|
|
}
|
|
|
|
ipcListener (event, { ch, data }) {
|
|
this.emitter.emit(ch, data);
|
|
}
|
|
|
|
on (ev, fn) {
|
|
this.emitter.on(ev, fn);
|
|
}
|
|
|
|
once (ev, fn) {
|
|
this.emitter.once(ev, fn);
|
|
}
|
|
|
|
emit (ev, data) {
|
|
if (!this.id) throw new Error('Not ready');
|
|
this.ipc.send(this.id, { ev, data });
|
|
}
|
|
|
|
removeListener (ev, fn) {
|
|
this.emitter.removeListener(ev, fn);
|
|
}
|
|
|
|
removeAllListeners () {
|
|
this.emitter.removeAllListeners();
|
|
}
|
|
|
|
destroy () {
|
|
this.removeAllListeners();
|
|
this.ipc.removeAllListeners();
|
|
}
|
|
|
|
}
|