Browse Source

ref: globserver stuff

Sv443 1 year ago
parent
commit
973a6f40a9
4 changed files with 13 additions and 22 deletions
  1. 2 2
      src/features/layout.ts
  2. 2 2
      src/index.ts
  3. 7 16
      src/observers.ts
  4. 2 2
      src/siteEvents.ts

+ 2 - 2
src/features/layout.ts

@@ -1,7 +1,7 @@
 import { addGlobalStyle, addParent, autoPlural, fetchAdvanced, insertAfter, pauseFor } from "@sv443-network/userutils";
 import { getFeatures } from "../config";
 import { siteEvents } from "../siteEvents";
-import { globservers } from "../observers";
+import { addSelectorListener } from "../observers";
 import { error, getResourceUrl, log, onSelectorOld, warn, t, onInteraction, getWatchId, getBestThumbnailUrl } from "../utils";
 import { scriptInfo } from "../constants";
 import { openCfgMenu } from "../menu/menu_old";
@@ -524,7 +524,7 @@ export async function initThumbnailOverlay() {
     log("Added thumbnail overlay");
   };
 
-  globservers.body.addListener<HTMLElement>(playerSelector, {
+  addSelectorListener("body", playerSelector, {
     listener(playerEl) {
       if(playerEl.getAttribute("player-ui-state") === "INACTIVE") {
         const obs = new MutationObserver(() => {

+ 2 - 2
src/index.ts

@@ -6,7 +6,7 @@ import { error, getDomain, info, getSessionId, log, setLogLevel, initTranslation
 import { initSiteEvents } from "./siteEvents";
 import { emitInterface, initInterface, initPlugins } from "./interface";
 import { addWelcomeMenu, showWelcomeMenu } from "./menu/welcomeMenu";
-import { initObservers, globservers } from "./observers";
+import { initObservers, addSelectorListener, globservers } from "./observers";
 import {
   // layout
   addWatermark, removeUpgradeTab,
@@ -145,7 +145,7 @@ async function onDomLoad() {
         await GM.setValue("bytm-installed", JSON.stringify({ timestamp: Date.now(), version: scriptInfo.version }));
       }
 
-      globservers.body.addListener("tp-yt-iron-dropdown #contentWrapper ytd-multi-page-menu-renderer #container.menu-container", {
+      addSelectorListener("body", "tp-yt-iron-dropdown #contentWrapper ytd-multi-page-menu-renderer #container.menu-container", {
         listener: addConfigMenuOption,
       });
 

+ 7 - 16
src/observers.ts

@@ -1,7 +1,7 @@
 import { SelectorListenerOptions, SelectorObserver, SelectorObserverOptions } from "@sv443-network/userutils";
 import type { ObserverName } from "./types";
 import { emitInterface } from "./interface";
-import { error, log } from "./utils";
+import { error } from "./utils";
 
 /** Options that are applied to every SelectorObserver instance */
 const defaultObserverOptions: SelectorObserverOptions = {
@@ -19,6 +19,7 @@ export function initObservers() {
       ...defaultObserverOptions,
       subtree: false,
     });
+
     globservers.body.enable();
 
     // #SECTION playerBar = media controls bar at the bottom of the page
@@ -27,11 +28,9 @@ export function initObservers() {
       ...defaultObserverOptions,
       defaultDebounce: 200,
     });
+
     globservers.body.addListener(playerBarSelector, {
-      listener: () => {
-        log("#DBG-UU enabling playerBar observer");
-        globservers.playerBar.enable();
-      },
+      listener: () => globservers.playerBar.enable(),
     });
 
     // #SECTION playerBarInfo = song title, artist, album, etc. inside the player bar
@@ -41,20 +40,12 @@ export function initObservers() {
       attributes: true,
       attributeFilter: ["title"],
     });
+
     globservers.playerBarInfo.addListener(playerBarInfoSelector, {
-      listener: () => {
-        log("#DBG-UU enabling playerBarTitle observer");
-        globservers.playerBarInfo.enable();
-      },
+      listener: () => globservers.playerBarInfo.enable(),
     });
 
-    // #DEBUG example: listen for title change:
-    globservers.playerBarInfo.addListener("yt-formatted-string.title", {
-      continuous: true,
-      listener: (titleElem) => {
-        log("#DBG-UU >>>>> title changed", titleElem.title);
-      },
-    });
+    //#SECTION finalize
 
     emitInterface("bytm:observersReady");
   }

+ 2 - 2
src/siteEvents.ts

@@ -2,7 +2,7 @@ import { createNanoEvents } from "nanoevents";
 import { error, info, onSelectorOld } from "./utils";
 import { FeatureConfig } from "./types";
 import { emitInterface } from "./interface";
-import { globservers } from "./observers";
+import { addSelectorListener } from "./observers";
 
 export interface SiteEventsMap {
   // misc:
@@ -105,7 +105,7 @@ export async function initSiteEvents() {
     let lastTitle: string | null = null;
     let initialPlay = true;
 
-    globservers.playerBarInfo.addListener("yt-formatted-string.title", {
+    addSelectorListener("playerBarInfo", "yt-formatted-string.title", {
       continuous: true,
       listener: (titleElem) => {
         const oldTitle = lastTitle;