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(); } });