Fix watchHeader() being called multiple times

This commit is contained in:
redphx 2024-07-13 18:04:17 +07:00
parent 5bfcf3a044
commit 9e39e80309

View File

@ -37,6 +37,8 @@ export class HeaderSection {
HeaderSection.#$settingsBtn, HeaderSection.#$settingsBtn,
); );
static #observer: MutationObserver;
static #injectSettingsButton($parent?: HTMLElement) { static #injectSettingsButton($parent?: HTMLElement) {
if (!$parent) { if (!$parent) {
return; return;
@ -77,11 +79,13 @@ export class HeaderSection {
} }
let timeout: number | null; let timeout: number | null;
const observer = new MutationObserver(mutationList => {
HeaderSection.#observer && HeaderSection.#observer.disconnect();
HeaderSection.#observer = new MutationObserver(mutationList => {
timeout && clearTimeout(timeout); timeout && clearTimeout(timeout);
timeout = window.setTimeout(HeaderSection.checkHeader, 2000); timeout = window.setTimeout(HeaderSection.checkHeader, 2000);
}); });
observer.observe($header, {subtree: true, childList: true}); HeaderSection.#observer.observe($header, {subtree: true, childList: true});
HeaderSection.checkHeader(); HeaderSection.checkHeader();
} }