From 9e39e803096cb54ebb653f02588afbed690c4b31 Mon Sep 17 00:00:00 2001 From: redphx <96280+redphx@users.noreply.github.com> Date: Sat, 13 Jul 2024 18:04:17 +0700 Subject: [PATCH] Fix watchHeader() being called multiple times --- src/modules/ui/header.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/modules/ui/header.ts b/src/modules/ui/header.ts index 28af3bf..9fa61ba 100644 --- a/src/modules/ui/header.ts +++ b/src/modules/ui/header.ts @@ -37,6 +37,8 @@ export class HeaderSection { HeaderSection.#$settingsBtn, ); + static #observer: MutationObserver; + static #injectSettingsButton($parent?: HTMLElement) { if (!$parent) { return; @@ -77,11 +79,13 @@ export class HeaderSection { } let timeout: number | null; - const observer = new MutationObserver(mutationList => { + + HeaderSection.#observer && HeaderSection.#observer.disconnect(); + HeaderSection.#observer = new MutationObserver(mutationList => { timeout && clearTimeout(timeout); timeout = window.setTimeout(HeaderSection.checkHeader, 2000); }); - observer.observe($header, {subtree: true, childList: true}); + HeaderSection.#observer.observe($header, {subtree: true, childList: true}); HeaderSection.checkHeader(); }