This commit is contained in:
Araxeus
2021-04-09 02:14:11 +03:00
parent d8dc4656e4
commit ba6244780c
2 changed files with 25 additions and 29 deletions

View File

@ -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

View File

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