59 lines
1.4 KiB
JavaScript
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();
|
|
}
|
|
});
|