From e6d77c165e0103fb12fb3148dde472373bc55517 Mon Sep 17 00:00:00 2001 From: Araxeus Date: Fri, 9 Apr 2021 18:39:57 +0300 Subject: [PATCH] Center Icon on ALL notifications Delete notification on windowclosed Refactor notifications.utils.setOption --- plugins/notifications/interactive.js | 4 +++ plugins/notifications/menu.js | 8 ++--- plugins/notifications/utils.js | 49 ++++++++++++++-------------- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/plugins/notifications/interactive.js b/plugins/notifications/interactive.js index 879c0613..d506463a 100644 --- a/plugins/notifications/interactive.js +++ b/plugins/notifications/interactive.js @@ -12,6 +12,10 @@ module.exports.setupInteractive = (win, unpauseNotification) => { controls = { playPause, next, previous }; onPause = unpauseNotification; + + win.webContents.on("closed", () => { + Delete() + }); } //delete old notification diff --git a/plugins/notifications/menu.js b/plugins/notifications/menu.js index ebc1f718..bfb8c809 100644 --- a/plugins/notifications/menu.js +++ b/plugins/notifications/menu.js @@ -1,4 +1,4 @@ -const { urgencyLevels, setUrgency, setUnpause, setInteractive } = require("./utils"); +const { urgencyLevels, setOption } = require("./utils"); const is = require("electron-is"); module.exports = (win, options) => [ @@ -8,21 +8,21 @@ module.exports = (win, options) => [ label: level.name, type: "radio", checked: options.urgency === level.value, - click: () => setUrgency(options, level.value) + click: () => setOption(options, "urgency", level.value) })), }, { label: "Show notification on unpause", type: "checkbox", checked: options.unpauseNotification, - click: (item) => setUnpause(options, item.checked) + click: (item) => setOption(options, "unpauseNotification", item.checked) }, ...(is.windows() ? [{ label: "Interactive Notifications", type: "checkbox", checked: options.interactive, - click: (item) => setInteractive(options, item.checked) + click: (item) => setOption(options, "interactive", item.checked) }] : []) ]; diff --git a/plugins/notifications/utils.js b/plugins/notifications/utils.js index 17b96091..34c73a77 100644 --- a/plugins/notifications/utils.js +++ b/plugins/notifications/utils.js @@ -6,52 +6,51 @@ const fs = require("fs"); const icon = "assets/youtube-music.png"; const tempIcon = path.join(app.getPath("userData"), "tempIcon.png"); +module.exports.icons = { + play: "\u{1405}", // ᐅ + pause: "\u{2016}", // ‖ + next: "\u{1433}", // ᐳ + previous: "\u{1438}" // ᐸ +} + +module.exports.setOption = (options, option, value) => { + options[option] = value; + setOptions("notifications", options) +} + module.exports.urgencyLevels = [ { name: "Low", value: "low" }, { name: "Normal", value: "normal" }, { name: "High", value: "critical" }, ]; -module.exports.setUrgency = (options, level) => { - options.urgency = level; - setOption(options); -}; -module.exports.setUnpause = (options, value) => { - options.unpauseNotification = value; - setOption(options); -}; -module.exports.setInteractive = (options, value) => { - options.interactive = value; - setOption(options); -} module.exports.notificationImage = function (songInfo, saveIcon = false) { //return local path to temp icon if (saveIcon && !!songInfo.image) { try { fs.writeFileSync(tempIcon, - songInfo.image - .resize({ height: 256, width: 256 }) + centerNativeImage(songInfo.image) .toPNG() ); } catch (err) { - console.log(`Error downloading song icon:\n${err.toString()}`) + console.log(`Error writing song icon to disk:\n${err.toString()}`) return icon; } return tempIcon; } //else: return image return songInfo.image - ? songInfo.image.resize({ height: 256, width: 256 }) + ? centerNativeImage(songInfo.image) : icon }; -let setOption = options => { - setOptions("notifications", options) -}; +function centerNativeImage(nativeImage) { + const tempImage = nativeImage.resize({ height: 256 }); + const margin = Math.max((tempImage.getSize().width - 256), 0); -module.exports.icons = { - play: "\u{1405}", // ᐅ - pause: "\u{2016}", // ‖ - next: "\u{1433}", // ᐳ - previous: "\u{1438}" // ᐸ -} \ No newline at end of file + return tempImage.crop({ + x: Math.round(margin / 2), + y: 0, + width: 256, height: 256 + }) +}