diff --git a/preload.js b/preload.js index 6cdaebdd10..5a09c84548 100644 --- a/preload.js +++ b/preload.js @@ -5,6 +5,8 @@ const { remote } = require("electron"); const config = require("./config"); const { fileExists } = require("./plugins/utils"); const setupFrontLogger = require("./providers/front-logger"); +const setupSongControl = require("./providers/song-controls-front"); +const setupSongInfo = require("./providers/song-info-front"); const plugins = config.plugins.getEnabled(); @@ -37,8 +39,10 @@ document.addEventListener("DOMContentLoaded", () => { }); // inject song-info provider - const songInfoProviderPath = path.join(__dirname, "providers", "song-info-front.js") - fileExists(songInfoProviderPath, require(songInfoProviderPath)); + setupSongInfo(); + + // inject song-control provider + setupSongControl(); // inject front logger setupFrontLogger(); diff --git a/providers/song-controls-front.js b/providers/song-controls-front.js new file mode 100644 index 0000000000..1860e7614e --- /dev/null +++ b/providers/song-controls-front.js @@ -0,0 +1,18 @@ +const { ipcRenderer } = require("electron"); + +let videoStream = document.querySelector(".video-stream"); +module.exports = () => { + ipcRenderer.on("playPause", () => { + if (!videoStream) { + videoStream = document.querySelector(".video-stream"); + } + + if (videoStream.paused) { + videoStream.play(); + } else { + videoStream.yns_pause ? + videoStream.yns_pause() : + videoStream.pause(); + } + }); +}; diff --git a/providers/song-controls.js b/providers/song-controls.js index 7f43df11bb..5d3ad953d2 100644 --- a/providers/song-controls.js +++ b/providers/song-controls.js @@ -12,7 +12,7 @@ module.exports = (win) => { // Playback previous: () => pressKey(win, "k"), next: () => pressKey(win, "j"), - playPause: () => pressKey(win, "space"), + playPause: () => win.webContents.send("playPause"), like: () => pressKey(win, "_"), dislike: () => pressKey(win, "+"), go10sBack: () => pressKey(win, "h"), diff --git a/providers/song-info-front.js b/providers/song-info-front.js index fbc98b993a..fccc54a8f0 100644 --- a/providers/song-info-front.js +++ b/providers/song-info-front.js @@ -10,17 +10,16 @@ ipcRenderer.on("update-song-info", async (_, extractedSongInfo) => { }); const injectListener = () => { - var oldXHR = window.XMLHttpRequest; + const oldXHR = window.XMLHttpRequest; function newXHR() { - var realXHR = new oldXHR(); + const realXHR = new oldXHR(); realXHR.addEventListener( "readystatechange", () => { - if (realXHR.readyState == 4 && realXHR.status == 200) { - if (realXHR.responseURL.includes("/player")) { + if (realXHR.readyState === 4 && realXHR.status === 200 + && realXHR.responseURL.includes("/player")) { // if the request contains the song info, send the response to ipcMain ipcRenderer.send("song-info-request", realXHR.responseText); - } } }, false