From 4b270eb4449a46bd849e479cb18a69f5e5f7ad5a Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Wed, 14 May 2025 12:28:56 +0300 Subject: [PATCH] Periodically refresh alerts on the device page (#25385) * Periodically refresh alerts on the device page * Update src/panels/config/devices/ha-config-device-page.ts Co-authored-by: Bram Kragten * revert type change * Apply suggestions from code review Co-authored-by: Bram Kragten --------- Co-authored-by: Bram Kragten --- src/panels/config/devices/ha-config-device-page.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/panels/config/devices/ha-config-device-page.ts b/src/panels/config/devices/ha-config-device-page.ts index d9b5fbdff4..e9cd570a80 100644 --- a/src/panels/config/devices/ha-config-device-page.ts +++ b/src/panels/config/devices/ha-config-device-page.ts @@ -107,6 +107,8 @@ export interface DeviceAlert { text: string; } +const DEVICE_ALERTS_INTERVAL = 30000; + @customElement("ha-config-device-page") export class HaConfigDevicePage extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; @@ -134,6 +136,8 @@ export class HaConfigDevicePage extends LitElement { @state() private _deviceAlerts?: DeviceAlert[]; + private _deviceAlertsTimeout?: number; + @state() @consume({ context: fullEntitiesContext, subscribe: true }) _entityReg!: EntityRegistryEntry[]; @@ -280,6 +284,7 @@ export class HaConfigDevicePage extends LitElement { this._getDiagnosticButtons(this._diagnosticDownloadLinks); this._getDeleteActions(); this._getDeviceActions(); + clearTimeout(this._deviceAlertsTimeout); this._getDeviceAlerts(); } @@ -295,6 +300,11 @@ export class HaConfigDevicePage extends LitElement { } } + public disconnectedCallback() { + super.disconnectedCallback(); + clearTimeout(this._deviceAlertsTimeout); + } + protected render() { if (!this.hass || !this.deviceId) { return nothing; @@ -1153,6 +1163,10 @@ export class HaConfigDevicePage extends LitElement { if (deviceAlerts.length) { this._deviceAlerts = deviceAlerts; + this._deviceAlertsTimeout = window.setTimeout( + () => this._getDeviceAlerts(), + DEVICE_ALERTS_INTERVAL + ); } }