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); } }); }); };