Merge pull request #216 from Araxeus/fix-duplicate-notification

[Notification Plugin] Fix duplicate notification
This commit is contained in:
th-ch
2021-04-02 23:10:19 +02:00
committed by GitHub
4 changed files with 30 additions and 5 deletions

View File

@ -42,7 +42,8 @@ const defaultConfig = {
},
notifications: {
enabled: false,
urgency: "normal"
urgency: "normal",
unpauseNotification: false
}
},
};

View File

@ -18,7 +18,7 @@ const notify = (info, options) => {
};
// Send the notification
currentNotification = new Notification(notification);
const currentNotification = new Notification(notification);
currentNotification.show()
return currentNotification;
@ -27,11 +27,21 @@ const notify = (info, options) => {
module.exports = (win, options) => {
const registerCallback = getSongInfo(win);
let oldNotification;
let oldURL = "";
win.on("ready-to-show", () => {
// Register the callback for new song information
registerCallback(songInfo => {
// If song is playing send notification
if (!songInfo.isPaused) {
// on pause - reset url? and skip notification
if (songInfo.isPaused) {
//reset oldURL if unpause notification option is on
if (options.unpauseNotification) {
oldURL = "";
}
return;
}
// If url isn't the same as last one - send notification
if (songInfo.url !== oldURL) {
oldURL = songInfo.url;
// Close the old notification
oldNotification?.close();
// This fixes a weird bug that would cause the notification to be updated instead of showing

View File

@ -1,4 +1,4 @@
const {urgencyLevels, setUrgency} = require("./utils");
const {urgencyLevels, setUrgency, setUnpause} = require("./utils");
module.exports = (win, options) => [
{
@ -10,4 +10,10 @@ module.exports = (win, options) => [
click: () => setUrgency(options, level.value)
})),
},
{
label: "Show notification on unpause",
type: "checkbox",
checked: options.unpauseNotification,
click: (item) => setUnpause(options, item.checked)
}
];

View File

@ -7,5 +7,13 @@ module.exports.urgencyLevels = [
];
module.exports.setUrgency = (options, level) => {
options.urgency = level
setOption(options)
};
module.exports.setUnpause = (options, value) => {
options.unpauseNotification = value
setOption(options)
};
let setOption = options => {
setOptions("notifications", options)
};