mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-10 10:11:46 +00:00
45 lines
1.2 KiB
JavaScript
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);
|
|
}
|
|
});
|
|
});
|
|
};
|