electron-demo.js/notifications.js

59 lines
1.4 KiB
JavaScript

var electron = require('electron');
var ipc = electron.ipcRenderer;
// This file runs in a render thread of the Electron app. It must be required (directly or
// indirectly) from one of the html files.
var timeoutId;
var stopped;
var count;
function startNotifications() {
stopped = false;
count = 0;
if (timeoutId) {
clearTimeout(timeoutId);
}
function notifyUser() {
timeoutId = null;
count += 1;
var notif = new window.Notification('Annoying Alert ' + count, {
body: 'See what happens when you try to click on it.',
silent: true,
});
// Notifications are unclickable on my system currently, not sure why.
notif.onclick = function () {
console.log('notification ' + count + ' clicked');
notif.close();
};
notif.onclose = function () {
if (!stopped && count < 10) {
timeoutId = setTimeout(notifyUser, 5000);
}
};
ipc.send('notification', count);
}
timeoutId = setTimeout(notifyUser, 1000);
}
function stopNotifications() {
stopped = true;
if (timeoutId) {
clearTimeout(timeoutId);
timeoutId = null;
}
// Let the progress bar know that we are finished.
ipc.send('notification', 0);
}
document.body.addEventListener('click', function (ev) {
if (ev.target.classList.contains('start-notify')) {
startNotifications();
}
else if (ev.target.classList.contains('stop-notify')) {
stopNotifications();
}
});