Skip to content

Commit

Permalink
Revert "Remove preload.js in plugin uses and use front plugin injection"
Browse files Browse the repository at this point in the history
This reverts commit 4cb658d.
  • Loading branch information
th-ch committed May 4, 2021
1 parent bf40996 commit d4811b7
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 27 deletions.
1 change: 1 addition & 0 deletions plugins/precise-volume/back.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ module.exports = (win) => {
// did-finish-load is called after all elements finished loading, including said listeners
// Thats the reason the timing is controlled from main
win.webContents.once("did-finish-load", () => {
win.webContents.send("restoreAddEventListener");
win.webContents.send("setupVideoPlayerVolumeMousewheel", !isEnabled("hide-video-player"));
});
};
Expand Down
27 changes: 0 additions & 27 deletions plugins/precise-volume/front.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ const { setOptions } = require("../../config/plugins");
function $(selector) { return document.querySelector(selector); }

module.exports = (options) => {
overrideAddEventListener();

setupPlaybar(options);

Expand All @@ -23,35 +22,9 @@ module.exports = (options) => {
ipcRenderer.once("setupVideoPlayerVolumeMousewheel", (_event, toEnable) => {
if (toEnable)
setupVideoPlayerOnwheel(options);
// Restore original function after did-finish-load to avoid keeping Element.prototype altered
Element.prototype.addEventListener = Element.prototype._addEventListener;
});
};

// Override specific listeners of volume-slider by modifying Element.prototype
function overrideAddEventListener() {
// Events to ignore
const nativeEvents = ["mousewheel", "keydown", "keyup"];
// Save native addEventListener
Element.prototype._addEventListener = Element.prototype.addEventListener;
// Override addEventListener to Ignore specific events in volume-slider
Element.prototype.addEventListener = function (
type,
listener,
useCapture = false
) {
if (this.tagName === "TP-YT-PAPER-SLIDER") {
// tagName of #volume-slider
for (const eventType of nativeEvents) {
if (eventType === type) {
return;
}
}
} //else
this._addEventListener(type, listener, useCapture);
};
}

/** Add onwheel event to video player */
function setupVideoPlayerOnwheel(options) {
$("#main-panel").addEventListener("wheel", event => {
Expand Down
28 changes: 28 additions & 0 deletions plugins/precise-volume/preload.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const { ipcRenderer } = require("electron");

// Override specific listeners of volume-slider by modifying Element.prototype
function overrideAddEventListener() {
// Events to ignore
const nativeEvents = ["mousewheel", "keydown", "keyup"];
// Save native addEventListener
Element.prototype._addEventListener = Element.prototype.addEventListener;
// Override addEventListener to Ignore specific events in volume-slider
Element.prototype.addEventListener = function (type, listener, useCapture = false) {
if (this.tagName === "TP-YT-PAPER-SLIDER") { // tagName of #volume-slider
for (const eventType of nativeEvents) {
if (eventType === type) {
return;
}
}
}//else
this._addEventListener(type, listener, useCapture);
};
}

module.exports = () => {
overrideAddEventListener();
// Restore original function after did-finish-load to avoid keeping Element.prototype altered
ipcRenderer.once("restoreAddEventListener", () => { //called from Main to make sure page is completly loaded
Element.prototype.addEventListener = Element.prototype._addEventListener;
});
};
6 changes: 6 additions & 0 deletions preload.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ const setupFrontLogger = require("./providers/front-logger");
const plugins = config.plugins.getEnabled();

plugins.forEach(([plugin, options]) => {
const preloadPath = path.join(__dirname, "plugins", plugin, "preload.js");
fileExists(preloadPath, () => {
const run = require(preloadPath);
run(options);
});

const actionPath = path.join(__dirname, "plugins", plugin, "actions.js");
fileExists(actionPath, () => {
const actions = require(actionPath).actions || {};
Expand Down

0 comments on commit d4811b7

Please sign in to comment.