hyper/app/notify.js

47 lines
1.1 KiB
JavaScript
Raw Normal View History

2019-11-28 05:17:01 -09:00
import {resolve} from 'path';
import {app, BrowserWindow} from 'electron';
import isDev from 'electron-is-dev';
2016-07-07 12:48:43 -08:00
let win;
// the hack of all hacks
// electron doesn't have a built in notification thing,
// so we launch a window on which we can use the
// HTML5 `Notification` API :'(
2016-07-07 14:17:11 -08:00
let buffer = [];
2016-07-07 12:48:43 -08:00
app.on('ready', () => {
const win_ = new BrowserWindow({
Update Electron to v6 (#3785) * 3.0.0 * 3.0.2 * Save * Save * Upgrade yarn lock packages * update node-gyp and node-pty * update travis and appveyor to node 12 * appveyor is outdated as always * update travis to xenial * update node-pty@0.9.0-beta26 * update yarn.lock * update electron to 6.0.8 * move node-pty to the correct package.json * Fix linting failure * Update yarn lockfile to try to fix appveyor build * Remove unnecessary changes from package.json * Try to fix appveyor by using a newer image * Fix linting after my last change * update electron to 6.0.9 * install windows-build-tools on appveyor * fix syntax * switch back to 2017 image * remove old resolutions field * revert accidental version change * update electron to 6.0.11 and electron-rebuild to 1.8.6 * downgrade yarn to 1.18 until this issue is resolved https://github.com/yarnpkg/yarn/issues/7584 * update node-gyp to 6.0.0 and generate a fresh yarn lockfile * update react and a few other dependencies * fix lint * this should actually be electron-builder, I think! * update a few dependencies * change to electron-store electron-config was renamed to electron-store a while ago * update xterm to v4.1.0 and ora to 4.0.2 * move pify to app/package.json * TODO: Revert maybe. Throw a fit on every change to maybe fix the resizing issues * a * fix react ref problem * fix split view focus problem * remove the unnecessary fit * remove the init col and row * fix the problem that cannot show about hyper * update electron to 6.0.12 * fix lint * add more todos for componentWillReceiveProps deprecation * update babel and plugins Co-authored-by: Juan Campa <juancampa@gmail.com> Co-authored-by: Benjamin Staneck <staneck@gmail.com> Co-authored-by: ivan <ivanwonder@outlook.com>
2019-10-10 11:20:26 -08:00
show: false,
webPreferences: {
nodeIntegration: true
}
2016-07-07 12:48:43 -08:00
});
2019-11-28 05:17:01 -09:00
const url = `file://${resolve(isDev ? __dirname : app.getAppPath(), 'notify.html')}`;
2016-07-07 12:48:43 -08:00
win_.loadURL(url);
2016-07-07 14:17:11 -08:00
win_.webContents.on('dom-ready', () => {
win = win_;
buffer.forEach(([title, body]) => {
notify(title, body);
});
buffer = null;
});
2016-07-07 12:48:43 -08:00
});
function notify(title, body, details = {}) {
//eslint-disable-next-line no-console
2016-07-13 12:44:24 -08:00
console.log(`[Notification] ${title}: ${body}`);
if (details.error) {
//eslint-disable-next-line no-console
console.error(details.error);
}
2016-07-07 12:48:43 -08:00
if (win) {
win.webContents.send('notification', {title, body});
2016-07-07 14:17:11 -08:00
} else {
buffer.push([title, body]);
2016-07-07 12:48:43 -08:00
}
2016-07-07 14:17:11 -08:00
}
2019-11-28 05:17:01 -09:00
export default notify;