From 642523783f7c877bda206223087c92e007b8db84 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Sun, 26 Oct 2025 22:12:52 -0400 Subject: [PATCH] Ensure subscriptions link hydrates after sidebar load --- js/app.js | 30 ++++++++++++++++++++++++++---- js/index.js | 8 ++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/js/app.js b/js/app.js index 9cdfb089..7302e0fd 100644 --- a/js/app.js +++ b/js/app.js @@ -5346,8 +5346,9 @@ class Application { this.profileButton.removeAttribute("hidden"); } - if (this.subscriptionsLink) { - this.subscriptionsLink.classList.remove("hidden"); + const subscriptionsLink = this.resolveSubscriptionsLink(); + if (subscriptionsLink) { + subscriptionsLink.classList.remove("hidden"); } } @@ -5379,8 +5380,9 @@ class Application { this.profileButton.setAttribute("hidden", ""); } - if (this.subscriptionsLink) { - this.subscriptionsLink.classList.add("hidden"); + const subscriptionsLink = this.resolveSubscriptionsLink(); + if (subscriptionsLink) { + subscriptionsLink.classList.add("hidden"); } } @@ -5392,6 +5394,26 @@ class Application { } } + resolveSubscriptionsLink() { + if (this.subscriptionsLink instanceof HTMLElement) { + return this.subscriptionsLink; + } + + const linkCandidate = document.getElementById("subscriptionsLink"); + if (linkCandidate instanceof HTMLElement) { + this.subscriptionsLink = linkCandidate; + return this.subscriptionsLink; + } + + this.subscriptionsLink = null; + return null; + } + + hydrateSidebarNavigation() { + this.resolveSubscriptionsLink(); + this.syncAuthUiState(); + } + maybeShowExperimentalLoginWarning(provider) { const normalizedProvider = typeof provider === "string" ? provider.trim().toLowerCase() : ""; diff --git a/js/index.js b/js/index.js index 42167448..c9d5f167 100644 --- a/js/index.js +++ b/js/index.js @@ -620,6 +620,14 @@ async function bootstrapInterface() { await loadSidebar("components/sidebar.html", "sidebarContainer"); devLogger.log("Sidebar loaded."); + if (application && typeof application.hydrateSidebarNavigation === "function") { + try { + application.hydrateSidebarNavigation(); + } catch (error) { + devLogger.warn("[Interface] Failed to hydrate sidebar navigation:", error); + } + } + bindOptionalExternalLink({ selector: "[data-blog-link]", url: BLOG_URL,