Merge pull request #212 from SapuSeven/master

Add configurable notification urgency
This commit is contained in:
th-ch
2021-03-29 22:42:17 +02:00
committed by GitHub
4 changed files with 35 additions and 6 deletions

View File

@ -39,6 +39,10 @@ const defaultConfig = {
activityTimoutEnabled: true, // if enabled, the discord rich presence gets cleared when music paused after the time specified below activityTimoutEnabled: true, // if enabled, the discord rich presence gets cleared when music paused after the time specified below
activityTimoutTime: 10 * 60 * 1000 // 10 minutes activityTimoutTime: 10 * 60 * 1000 // 10 minutes
}, },
notifications: {
enabled: false,
urgency: "normal"
}
}, },
}; };

View File

@ -1,7 +1,7 @@
const { Notification } = require("electron"); const { Notification } = require("electron");
const getSongInfo = require("../../providers/song-info"); const getSongInfo = require("../../providers/song-info");
const notify = info => { const notify = (info, options) => {
let notificationImage = "assets/youtube-music.png"; let notificationImage = "assets/youtube-music.png";
if (info.image) { if (info.image) {
@ -14,27 +14,28 @@ const notify = info => {
body: info.artist, body: info.artist,
icon: notificationImage, icon: notificationImage,
silent: true, silent: true,
urgency: options.urgency,
}; };
// Send the notification // Send the notification
currentNotification = new Notification(notification); currentNotification = new Notification(notification);
currentNotification.show() currentNotification.show()
return currentNotification; return currentNotification;
}; };
module.exports = (win) => { module.exports = (win, options) => {
const registerCallback = getSongInfo(win); const registerCallback = getSongInfo(win);
let oldNotification; let oldNotification;
win.on("ready-to-show", () => { win.on("ready-to-show", () => {
// Register the callback for new song information // Register the callback for new song information
registerCallback(songInfo => { registerCallback(songInfo => {
// If song is playing send notification // If song is playing send notification
if (!songInfo.isPaused) { if (!songInfo.isPaused) {
// Close the old notification // Close the old notification
oldNotification?.close(); oldNotification?.close();
// This fixes a weird bug that would cause the notification to be updated instead of showing // This fixes a weird bug that would cause the notification to be updated instead of showing
setTimeout(()=>{ oldNotification = notify(songInfo) }, 10); setTimeout(()=>{ oldNotification = notify(songInfo, options) }, 10);
} }
}); });
}); });

View File

@ -0,0 +1,13 @@
const {urgencyLevels, setUrgency} = require("./utils");
module.exports = (win, options) => [
{
label: "Notification Priority",
submenu: urgencyLevels.map(level => ({
label: level.name,
type: "radio",
checked: options.urgency === level.value,
click: () => setUrgency(options, level.value)
})),
},
];

View File

@ -0,0 +1,11 @@
const {setOptions} = require("../../config/plugins");
module.exports.urgencyLevels = [
{name: "Low", value: "low"},
{name: "Normal", value: "normal"},
{name: "High", value: "critical"},
];
module.exports.setUrgency = (options, level) => {
options.urgency = level
setOptions("notifications", options)
};