From 38449f003affcdcd131b0ccaacebf420e1edbb76 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sat, 23 Oct 2021 18:28:38 +0300 Subject: [PATCH] use apiLoad event --- preload.js | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/preload.js b/preload.js index aa213071..65e55300 100644 --- a/preload.js +++ b/preload.js @@ -10,6 +10,8 @@ const setupSongInfo = require("./providers/song-info-front"); const plugins = config.plugins.getEnabled(); +let api; + plugins.forEach(([plugin, options]) => { const preloadPath = path.join(__dirname, "plugins", plugin, "preload.js"); fileExists(preloadPath, () => { @@ -38,10 +40,8 @@ document.addEventListener("DOMContentLoaded", () => { }); }); - // Remove upgrade button - if (config.get("options.removeUpgradeButton")) { - document.querySelector('[tab-id*="SPunlimited"]').style.display = "none"; - } + // wait for complete load of youtube api + listenForApiLoad(); // inject song-info provider setupSongInfo(); @@ -56,3 +56,30 @@ document.addEventListener("DOMContentLoaded", () => { global.reload = () => remote.getCurrentWindow().webContents.loadURL(config.get("url")); }); + +function listenForApiLoad() { + api = document.querySelector('#movie_player'); + if (api) { + onApiLoaded(); + return; + } + + const observer = new MutationObserver(() => { + api = document.querySelector('#movie_player'); + if (api) { + observer.disconnect(); + onApiLoaded(); + } + }) + + observer.observe(document.documentElement, { childList: true, subtree: true }); +} + +function onApiLoaded() { + document.dispatchEvent(new CustomEvent('apiLoaded', { detail: api })); + + // Remove upgrade button + if (config.get("options.removeUpgradeButton")) { + document.querySelector('ytmusic-pivot-bar-item-renderer[tab-id="SPunlimited"]').style.display = "none"; + } +}