Files
youtube-music/plugins/notifications/back.js
2021-04-01 15:39:07 +03:00

45 lines
1.2 KiB
JavaScript

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