From 7add8a2ea0b1c27672631bd6dc9f8a304e02f31c Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 2 Oct 2019 18:29:36 +0200 Subject: [PATCH] Guard for null badges (#3841) * Guard for null badges * Check for null badges on load and save --- .../lovelace/editor/view-editor/hui-edit-view.ts | 4 ++-- src/panels/lovelace/ha-panel-lovelace.ts | 11 +++++++++++ src/panels/lovelace/views/hui-view.ts | 3 +-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/panels/lovelace/editor/view-editor/hui-edit-view.ts b/src/panels/lovelace/editor/view-editor/hui-edit-view.ts index 55d68a1702..ab7a051eb8 100644 --- a/src/panels/lovelace/editor/view-editor/hui-edit-view.ts +++ b/src/panels/lovelace/editor/view-editor/hui-edit-view.ts @@ -215,9 +215,9 @@ export class HuiEditView extends LitElement { this._saving = true; const viewConf: LovelaceViewConfig = { - cards: this._cards, - badges: this._badges!.map((entityConf) => entityConf.entity), ...this._config, + badges: this._badges!.map((entityConf) => entityConf.entity), + cards: this._cards, }; const lovelace = this.lovelace!; diff --git a/src/panels/lovelace/ha-panel-lovelace.ts b/src/panels/lovelace/ha-panel-lovelace.ts index 1a1f0e543d..1bfe6ac7de 100644 --- a/src/panels/lovelace/ha-panel-lovelace.ts +++ b/src/panels/lovelace/ha-panel-lovelace.ts @@ -249,7 +249,17 @@ class LovelacePanel extends LitElement { this._setLovelaceConfig(conf, confMode); } + private _checkLovelaceConfig(config: LovelaceConfig) { + // Somehow there can be badges with value null, we remove those + config.views.forEach((view) => { + if (view.badges) { + view.badges = view.badges.filter(Boolean); + } + }); + } + private _setLovelaceConfig(config: LovelaceConfig, mode: Lovelace["mode"]) { + this._checkLovelaceConfig(config); this.lovelace = { config, mode, @@ -273,6 +283,7 @@ class LovelacePanel extends LitElement { }, saveConfig: async (newConfig: LovelaceConfig): Promise => { const { config: previousConfig, mode: previousMode } = this.lovelace!; + this._checkLovelaceConfig(newConfig); try { // Optimistic update this._updateLovelace({ diff --git a/src/panels/lovelace/views/hui-view.ts b/src/panels/lovelace/views/hui-view.ts index 5edef27a25..1edcd41d7b 100644 --- a/src/panels/lovelace/views/hui-view.ts +++ b/src/panels/lovelace/views/hui-view.ts @@ -262,8 +262,7 @@ export class HUIView extends LitElement { } const elements: HUIView["_badges"] = []; - // It's possible that a null value was stored as a badge entry - const badges = processConfigEntities(config.badges.filter(Boolean)); + const badges = processConfigEntities(config.badges); for (const badge of badges) { const element = document.createElement("ha-state-label-badge"); const entityId = badge.entity;