From ed09304ed7323fab4dbd3a341a22506ab30c8a31 Mon Sep 17 00:00:00 2001 From: TC Date: Thu, 14 Jan 2021 23:09:04 +0100 Subject: [PATCH] Refactor tray to use provider + play/pause on click --- config/defaults.js | 1 + menu.js | 9 +++++++++ tray.js | 24 ++++++++++-------------- utils/youtube-music.js | 8 -------- 4 files changed, 20 insertions(+), 22 deletions(-) delete mode 100644 utils/youtube-music.js diff --git a/config/defaults.js b/config/defaults.js index df94cadf..b94ae18f 100644 --- a/config/defaults.js +++ b/config/defaults.js @@ -12,6 +12,7 @@ const defaultConfig = { startAtLogin: false, disableHardwareAcceleration: false, restartOnConfigChanges: false, + trayClickPlayPause: false, }, plugins: { // Enabled plugins diff --git a/menu.js b/menu.js index 6f932e49..09540c09 100644 --- a/menu.js +++ b/menu.js @@ -116,6 +116,15 @@ const mainMenuTemplate = (win) => [ config.set("options.appVisible", false); }, }, + { type: "separator" }, + { + label: "Play/Pause on click", + type: "checkbox", + checked: config.get("options.trayClickPlayPause"), + click: (item) => { + config.set("options.trayClickPlayPause", item.checked); + }, + }, ], }, { type: "separator" }, diff --git a/tray.js b/tray.js index ff5f91eb..75af7494 100644 --- a/tray.js +++ b/tray.js @@ -4,7 +4,7 @@ const { Menu, nativeImage, Tray } = require("electron"); const config = require("./config"); const { mainMenuTemplate } = require("./menu"); -const { clickInYoutubeMusic } = require("./utils/youtube-music"); +const getSongControls = require("./providers/song-controls"); // Prevent tray being garbage collected let tray; @@ -15,6 +15,7 @@ module.exports.setUpTray = (app, win) => { return; } + const { playPause, next, previous } = getSongControls(win); const iconPath = path.join(__dirname, "assets", "youtube-music-tray.png"); let trayIcon = nativeImage.createFromPath(iconPath).resize({ width: 16, @@ -24,35 +25,30 @@ module.exports.setUpTray = (app, win) => { tray.setToolTip("Youtube Music"); tray.setIgnoreDoubleClickEvents(true); tray.on("click", () => { - win.isVisible() ? win.hide() : win.show(); + if (config.get("options.trayClickPlayPause")) { + playPause(); + } else { + win.isVisible() ? win.hide() : win.show(); + } }); const trayMenu = Menu.buildFromTemplate([ { label: "Play/Pause", click: () => { - clickInYoutubeMusic( - win, - "#left-controls > div > paper-icon-button.play-pause-button.style-scope.ytmusic-player-bar" - ); + playPause(); }, }, { label: "Next", click: () => { - clickInYoutubeMusic( - win, - "#left-controls > div > paper-icon-button.next-button.style-scope.ytmusic-player-bar" - ); + next(); }, }, { label: "Previous", click: () => { - clickInYoutubeMusic( - win, - "#left-controls > div > paper-icon-button.previous-button.style-scope.ytmusic-player-bar" - ); + previous(); }, }, { diff --git a/utils/youtube-music.js b/utils/youtube-music.js deleted file mode 100644 index 3a7e848a..00000000 --- a/utils/youtube-music.js +++ /dev/null @@ -1,8 +0,0 @@ -const clickInYoutubeMusic = (win, selector) => { - win.webContents.executeJavaScript( - `document.querySelector("${selector}").click();`, - true - ); -}; - -module.exports = { clickInYoutubeMusic };