diff --git a/dist/better-xcloud.lite.user.js b/dist/better-xcloud.lite.user.js index 40b4e8d..22aab77 100644 --- a/dist/better-xcloud.lite.user.js +++ b/dist/better-xcloud.lite.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Better xCloud (Lite) // @namespace https://github.com/redphx -// @version 5.9.4 +// @version 5.9.5-beta // @description Improve Xbox Cloud Gaming (xCloud) experience // @author redphx // @license MIT @@ -105,7 +105,7 @@ class UserAgent { }); } } -var SCRIPT_VERSION = "5.9.4", SCRIPT_VARIANT = "lite", AppInterface = window.AppInterface; +var SCRIPT_VERSION = "5.9.5-beta", SCRIPT_VARIANT = "lite", AppInterface = window.AppInterface; UserAgent.init(); var userAgent = window.navigator.userAgent.toLowerCase(), isTv = userAgent.includes("smart-tv") || userAgent.includes("smarttv") || /\baft.*\b/.test(userAgent), isVr = window.navigator.userAgent.includes("VR") && window.navigator.userAgent.includes("OculusBrowser"), browserHasTouchSupport = "ontouchstart" in window || navigator.maxTouchPoints > 0, userAgentHasTouchSupport = !isTv && !isVr && browserHasTouchSupport, supportMkb = AppInterface || !userAgent.match(/(android|iphone|ipad)/), STATES = { supportedRegion: !0, @@ -4895,6 +4895,8 @@ class GuideMenu { } observe($addedElm) { let className = $addedElm.className; + if (!className) className = $addedElm.firstElementChild?.className ?? ""; + if (!className || className.startsWith("bx-")) return; if (!className.startsWith("NavigationAnimation") && !className.startsWith("DialogRoutes") && !className.startsWith("Dialog-module__container")) return; let $selectedTab = $addedElm.querySelector("div[class^=NavigationMenu] button[aria-selected=true"); if ($selectedTab) { @@ -5956,7 +5958,7 @@ class RootDialogObserver { if (mutation.type !== "childList") continue; if (BX_FLAGS.Debug && BxLogger.warning("RootDialog", "added", mutation.addedNodes), mutation.addedNodes.length === 1) { let $addedElm = mutation.addedNodes[0]; - if ($addedElm instanceof HTMLElement && $addedElm.className) RootDialogObserver.handleAddedElement($root, $addedElm); + if ($addedElm instanceof HTMLElement) RootDialogObserver.handleAddedElement($root, $addedElm); } let shown = !!($root.firstElementChild && $root.firstElementChild.childElementCount > 0); if (shown !== beingShown) beingShown = shown, BxEvent.dispatch(window, shown ? BxEvent.XCLOUD_DIALOG_SHOWN : BxEvent.XCLOUD_DIALOG_DISMISSED); diff --git a/dist/better-xcloud.user.js b/dist/better-xcloud.user.js index 2734b40..aa701f9 100644 --- a/dist/better-xcloud.user.js +++ b/dist/better-xcloud.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Better xCloud // @namespace https://github.com/redphx -// @version 5.9.4 +// @version 5.9.5-beta // @description Improve Xbox Cloud Gaming (xCloud) experience // @author redphx // @license MIT @@ -107,7 +107,7 @@ class UserAgent { }); } } -var SCRIPT_VERSION = "5.9.4", SCRIPT_VARIANT = "full", AppInterface = window.AppInterface; +var SCRIPT_VERSION = "5.9.5-beta", SCRIPT_VARIANT = "full", AppInterface = window.AppInterface; UserAgent.init(); var userAgent = window.navigator.userAgent.toLowerCase(), isTv = userAgent.includes("smart-tv") || userAgent.includes("smarttv") || /\baft.*\b/.test(userAgent), isVr = window.navigator.userAgent.includes("VR") && window.navigator.userAgent.includes("OculusBrowser"), browserHasTouchSupport = "ontouchstart" in window || navigator.maxTouchPoints > 0, userAgentHasTouchSupport = !isTv && !isVr && browserHasTouchSupport, supportMkb = AppInterface || !userAgent.match(/(android|iphone|ipad)/), STATES = { supportedRegion: !0, @@ -6514,6 +6514,8 @@ class GuideMenu { } observe($addedElm) { let className = $addedElm.className; + if (!className) className = $addedElm.firstElementChild?.className ?? ""; + if (!className || className.startsWith("bx-")) return; if (className.includes("AchievementsButton-module__progressBarContainer")) { TrueAchievements.getInstance().injectAchievementsProgress($addedElm); return; @@ -7924,7 +7926,7 @@ class RootDialogObserver { if (mutation.type !== "childList") continue; if (BX_FLAGS.Debug && BxLogger.warning("RootDialog", "added", mutation.addedNodes), mutation.addedNodes.length === 1) { let $addedElm = mutation.addedNodes[0]; - if ($addedElm instanceof HTMLElement && $addedElm.className) RootDialogObserver.handleAddedElement($root, $addedElm); + if ($addedElm instanceof HTMLElement) RootDialogObserver.handleAddedElement($root, $addedElm); } let shown = !!($root.firstElementChild && $root.firstElementChild.childElementCount > 0); if (shown !== beingShown) beingShown = shown, BxEvent.dispatch(window, shown ? BxEvent.XCLOUD_DIALOG_SHOWN : BxEvent.XCLOUD_DIALOG_DISMISSED); diff --git a/src/modules/ui/guide-menu.ts b/src/modules/ui/guide-menu.ts index 0fbb8d2..b086906 100644 --- a/src/modules/ui/guide-menu.ts +++ b/src/modules/ui/guide-menu.ts @@ -178,7 +178,16 @@ export class GuideMenu { } observe($addedElm: HTMLElement) { - const className = $addedElm.className; + let className = $addedElm.className; + + // Fix custom buttons disappearing in Guide Menu (#551) + if (!className) { + className = $addedElm.firstElementChild?.className ?? ''; + } + + if (!className || className.startsWith('bx-')) { + return; + } // TrueAchievements if (isFullVersion() && className.includes('AchievementsButton-module__progressBarContainer')) { diff --git a/src/utils/root-dialog-observer.ts b/src/utils/root-dialog-observer.ts index f66c0c8..3361950 100644 --- a/src/utils/root-dialog-observer.ts +++ b/src/utils/root-dialog-observer.ts @@ -79,7 +79,7 @@ export class RootDialogObserver { BX_FLAGS.Debug && BxLogger.warning('RootDialog', 'added', mutation.addedNodes); if (mutation.addedNodes.length === 1) { const $addedElm = mutation.addedNodes[0]; - if ($addedElm instanceof HTMLElement && $addedElm.className) { + if ($addedElm instanceof HTMLElement) { RootDialogObserver.handleAddedElement($root, $addedElm); } }