From 9220d65f78d83272e846acc1394bb7145e74d5ca Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Mon, 30 Jan 2023 20:08:33 +0100 Subject: [PATCH] Fixes history unsubcription (#15271) * Fixes history unsubcriptions * Remove async --- src/dialogs/more-info/ha-more-info-history.ts | 17 +++++-------- .../lovelace/cards/hui-history-graph-card.ts | 2 +- src/panels/lovelace/cards/hui-map-card.ts | 25 ++++++++----------- .../header-footer/hui-graph-header-footer.ts | 23 +++++++---------- 4 files changed, 26 insertions(+), 41 deletions(-) diff --git a/src/dialogs/more-info/ha-more-info-history.ts b/src/dialogs/more-info/ha-more-info-history.ts index dd2a5c1165..2fae84f071 100644 --- a/src/dialogs/more-info/ha-more-info-history.ts +++ b/src/dialogs/more-info/ha-more-info-history.ts @@ -113,20 +113,15 @@ export class MoreInfoHistory extends LitElement { public disconnectedCallback() { super.disconnectedCallback(); - this._unsubscribeHistoryTimeWindow(); + this._unsubscribeHistory(); } - private _unsubscribeHistoryTimeWindow() { - if (!this._subscribed) { - return; - } + private _unsubscribeHistory() { clearInterval(this._interval); - this._subscribed.then((unsubscribe) => { - if (unsubscribe) { - unsubscribe(); - } + if (this._subscribed) { + this._subscribed.then((unsub) => unsub?.()); this._subscribed = undefined; - }); + } } private _redrawGraph() { @@ -165,7 +160,7 @@ export class MoreInfoHistory extends LitElement { return; } if (this._subscribed) { - this._unsubscribeHistoryTimeWindow(); + this._unsubscribeHistory(); } this._subscribed = subscribeHistoryStatesTimeWindow( this.hass!, diff --git a/src/panels/lovelace/cards/hui-history-graph-card.ts b/src/panels/lovelace/cards/hui-history-graph-card.ts index 4d145385e3..046c0866d5 100644 --- a/src/panels/lovelace/cards/hui-history-graph-card.ts +++ b/src/panels/lovelace/cards/hui-history-graph-card.ts @@ -94,7 +94,7 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard { this._unsubscribeHistory(); } - private async _subscribeHistory() { + private _subscribeHistory() { if (!isComponentLoaded(this.hass!, "history") || this._subscribed) { return; } diff --git a/src/panels/lovelace/cards/hui-map-card.ts b/src/panels/lovelace/cards/hui-map-card.ts index b608e61b3a..917b53e276 100644 --- a/src/panels/lovelace/cards/hui-map-card.ts +++ b/src/panels/lovelace/cards/hui-map-card.ts @@ -191,16 +191,16 @@ class HuiMapCard extends LitElement implements LovelaceCard { public connectedCallback() { super.connectedCallback(); if (this.hasUpdated && this._configEntities?.length) { - this._subscribeHistoryTimeWindow(); + this._subscribeHistory(); } } public disconnectedCallback() { super.disconnectedCallback(); - this._unsubscribeHistoryTimeWindow(); + this._unsubscribeHistory(); } - private _subscribeHistoryTimeWindow() { + private _subscribeHistory() { if (!isComponentLoaded(this.hass!, "history") || this._subscribed) { return; } @@ -223,26 +223,21 @@ class HuiMapCard extends LitElement implements LovelaceCard { }); } - private _unsubscribeHistoryTimeWindow() { - if (!this._subscribed) { - return; - } - this._subscribed.then((unsubscribe) => { - if (unsubscribe) { - unsubscribe(); - } + private _unsubscribeHistory() { + if (this._subscribed) { + this._subscribed.then((unsub) => unsub?.()); this._subscribed = undefined; - }); + } } protected updated(changedProps: PropertyValues): void { if (this._configEntities?.length) { if (!this._subscribed || changedProps.has("_config")) { - this._unsubscribeHistoryTimeWindow(); - this._subscribeHistoryTimeWindow(); + this._unsubscribeHistory(); + this._subscribeHistory(); } } else { - this._unsubscribeHistoryTimeWindow(); + this._unsubscribeHistory(); } if (changedProps.has("_config")) { this._computePadding(); diff --git a/src/panels/lovelace/header-footer/hui-graph-header-footer.ts b/src/panels/lovelace/header-footer/hui-graph-header-footer.ts index 12dbbfdcaf..63ea87d580 100644 --- a/src/panels/lovelace/header-footer/hui-graph-header-footer.ts +++ b/src/panels/lovelace/header-footer/hui-graph-header-footer.ts @@ -132,16 +132,16 @@ export class HuiGraphHeaderFooter public connectedCallback() { super.connectedCallback(); if (this.hasUpdated) { - this._subscribeHistoryTimeWindow(); + this._subscribeHistory(); } } public disconnectedCallback() { super.disconnectedCallback(); - this._unsubscribeHistoryTimeWindow(); + this._unsubscribeHistory(); } - private _subscribeHistoryTimeWindow() { + private _subscribeHistory() { if (!isComponentLoaded(this.hass!, "history") || this._subscribed) { return; } @@ -185,17 +185,12 @@ export class HuiGraphHeaderFooter ); } - private _unsubscribeHistoryTimeWindow() { + private _unsubscribeHistory() { clearInterval(this._interval); - if (!this._subscribed) { - return; - } - this._subscribed.then((unsubscribe) => { - if (unsubscribe) { - unsubscribe(); - } + if (this._subscribed) { + this._subscribed.then((unsub) => unsub?.()); this._subscribed = undefined; - }); + } } protected updated(changedProps: PropertyValues) { @@ -209,8 +204,8 @@ export class HuiGraphHeaderFooter !this._subscribed || oldConfig.entity !== this._config.entity ) { - this._unsubscribeHistoryTimeWindow(); - this._subscribeHistoryTimeWindow(); + this._unsubscribeHistory(); + this._subscribeHistory(); } }