Optimize checkHeader()

This commit is contained in:
redphx 2024-07-14 09:17:12 +07:00
parent 542079d53e
commit 5e22bf097a

View File

@ -38,6 +38,7 @@ export class HeaderSection {
); );
static #observer: MutationObserver; static #observer: MutationObserver;
static #timeout: number | null;
static #injectSettingsButton($parent?: HTMLElement) { static #injectSettingsButton($parent?: HTMLElement) {
if (!$parent) { if (!$parent) {
@ -60,9 +61,7 @@ export class HeaderSection {
} }
static checkHeader() { static checkHeader() {
const $button = document.querySelector('.bx-header-settings-button'); if (!HeaderSection.#$buttonsWrapper.isConnected) {
if (!$button) {
const $rightHeader = document.querySelector('#PageContent div[class*=EdgewaterHeader-module__rightSectionSpacing]'); const $rightHeader = document.querySelector('#PageContent div[class*=EdgewaterHeader-module__rightSectionSpacing]');
HeaderSection.#injectSettingsButton($rightHeader as HTMLElement); HeaderSection.#injectSettingsButton($rightHeader as HTMLElement);
} }
@ -78,12 +77,10 @@ export class HeaderSection {
return; return;
} }
let timeout: number | null;
HeaderSection.#observer && HeaderSection.#observer.disconnect(); HeaderSection.#observer && HeaderSection.#observer.disconnect();
HeaderSection.#observer = new MutationObserver(mutationList => { HeaderSection.#observer = new MutationObserver(mutationList => {
timeout && clearTimeout(timeout); HeaderSection.#timeout && clearTimeout(HeaderSection.#timeout);
timeout = window.setTimeout(HeaderSection.checkHeader, 2000); HeaderSection.#timeout = window.setTimeout(HeaderSection.checkHeader, 2000);
}); });
HeaderSection.#observer.observe($header, {subtree: true, childList: true}); HeaderSection.#observer.observe($header, {subtree: true, childList: true});