diff --git a/plugins/notifications/back.js b/plugins/notifications/back.js index 9e1b3fd1..31162320 100644 --- a/plugins/notifications/back.js +++ b/plugins/notifications/back.js @@ -3,7 +3,7 @@ const is = require("electron-is"); const getSongInfo = require("../../providers/song-info"); const { notificationImage } = require("./utils"); -const { setup, notifyInteractive } = require("./interactive") +const { setupInteractive, notifyInteractive } = require("./interactive") const notify = (info, options) => { @@ -24,9 +24,10 @@ const notify = (info, options) => { }; module.exports = (win, options) => { + const isInteractive = is.windows() && options.interactive; //setup interactive notifications for windows - if (is.windows()) { - setup(win); + if (isInteractive) { + setupInteractive(win); } const registerCallback = getSongInfo(win); let oldNotification; @@ -45,7 +46,7 @@ module.exports = (win, options) => { // If url isn"t the same as last one - send notification if (songInfo.url !== oldURL) { oldURL = songInfo.url; - if (is.windows() && options.interactive) { + if (isInteractive) { notifyInteractive(songInfo); } else { // Close the old notification diff --git a/plugins/notifications/interactive.js b/plugins/notifications/interactive.js index c41588ae..06999153 100644 --- a/plugins/notifications/interactive.js +++ b/plugins/notifications/interactive.js @@ -2,40 +2,29 @@ const { notificationImage, icons } = require("./utils"); const getSongControls = require('../../providers/song-controls'); const notifier = require("node-notifier"); -//store song controls +//store song controls reference on launch let controls; +module.exports.setupInteractive = (win) => { + //save controls + const { playPause, next, previous } = getSongControls(win); + controls = { playPause, next, previous }; +} //delete old notification let toDelete; function Delete() { - if (toDelete === undefined) { - return; + if (toDelete !== undefined) { + const removeNotif = Object.assign(toDelete, { + remove: toDelete.id + }) + notifier.notify(removeNotif) + + toDelete = undefined; } - const removeNotif = Object.assign(toDelete, { - remove: toDelete.id - }) - notifier.notify(removeNotif) - - toDelete = undefined; -} - -//Setup on launch -module.exports.setup = (win) => { - //save controls - const { playPause, next, previous } = getSongControls(win); - controls = { playPause, next, previous }; - //setup global listeners - notifier.on("dismissed", () => { Delete(); }); - notifier.on("timeout", () => { Delete(); }); - - //remove all listeners on close - win.on("closed", () => { - notifier.removeAllListeners(); - }); } //New notification -module.exports.notifyInteractive = function sendToaster(songInfo) { +module.exports.notifyInteractive = (songInfo) => { Delete(); //download image and get path let imgSrc = notificationImage(songInfo, true); @@ -61,6 +50,7 @@ module.exports.notifyInteractive = function sendToaster(songInfo) { console.log(`ERROR = ${err}\n DATA = ${data}`); } switch (data) { + //buttons case icons.previous.normalize(): controls.previous(); return; @@ -76,6 +66,11 @@ module.exports.notifyInteractive = function sendToaster(songInfo) { songInfo.isPaused = true; toDelete = undefined; // it gets deleted automatically sendToaster(songInfo); + return; + //Native datatype + case "dismissed": + case "timeout": + Delete(); } }