Move to single global document observer where possible and relevant

This commit is contained in:
HighImKevin
2026-10-12 04:44:40 -04:00
parent 5d34fd09d9
commit 34bb37ff27
13 changed files with 874 additions and 329 deletions
+25 -18
View File
@@ -701,30 +701,37 @@
return isAppVersionAtLeast12();
}
function ensureToolbarObserver() {
if (toolbarObserver || typeof MutationObserver === 'undefined' || !document.body) return;
let scheduled = false;
toolbarObserver = new MutationObserver(() => {
if (scheduled) return;
scheduled = true;
requestAnimationFrame(() => {
scheduled = false;
ensureHamburgerButton();
});
});
toolbarObserver.observe(document.body, { childList: true, subtree: true });
}
function start() {
ensureStyles();
function armToolbarPoll() {
ensureHamburgerButton();
ensureToolbarObserver();
// Retry briefly for late toolbar mount
let tries = 0;
const poll = setInterval(() => {
tries += 1;
if (ensureHamburgerButton() || tries >= 40) clearInterval(poll);
}, 250);
}
function start() {
ensureStyles();
armToolbarPoll();
const utils = window.KefinTweaksUtils;
if (utils?.onViewPage) {
// Toolbar remounts across navigations — short poll per view, no permanent body MO
utils.onViewPage(() => {
armToolbarPoll();
});
} else if (utils?.onBodyMutation) {
let scheduled = false;
toolbarObserver = utils.onBodyMutation('hamburger-toolbar', () => {
if (scheduled) return;
scheduled = true;
requestAnimationFrame(() => {
scheduled = false;
ensureHamburgerButton();
});
});
}
LOG('Desktop hamburger menu initialized');
}