fix(webui): prevent duplicate visibility change listeners in health check

Ensure the visibility change event listener for health checks is set up only once
and properly removed on destroy to avoid memory leaks and duplicate handlers.
This commit is contained in:
jgor20
2026-01-10 22:58:11 +00:00
parent 69440584fd
commit c3629d660c

View File

@@ -100,10 +100,10 @@ document.addEventListener('alpine:init', () => {
clearInterval(this.healthCheckTimer);
}
// Setup visibility change listener
// Setup visibility change listener (only once)
if (!this._healthVisibilitySetup) {
this._healthVisibilitySetup = true;
document.addEventListener('visibilitychange', () => {
this._visibilityHandler = () => {
if (document.hidden) {
// Tab hidden - stop health checks
this.stopHealthCheck();
@@ -111,7 +111,8 @@ document.addEventListener('alpine:init', () => {
// Tab visible - restart health checks
this.startHealthCheck();
}
});
};
document.addEventListener('visibilitychange', this._visibilityHandler);
}
// Perform immediate health check
@@ -271,6 +272,9 @@ document.addEventListener('alpine:init', () => {
destroy() {
this.stopHealthCheck();
if (this._visibilityHandler) {
document.removeEventListener('visibilitychange', this._visibilityHandler);
}
}
});
});