From 869b7c85cafddefa81da4ba47702de1dd4a25bc9 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 8 Sep 2020 13:56:45 -0500 Subject: [PATCH] Ensure we pickup all the reloadable domains (#6861) --- src/common/config/components_with_service.ts | 9 ++++ .../ha-config-server-control.ts | 50 ++++++++----------- 2 files changed, 31 insertions(+), 28 deletions(-) create mode 100644 src/common/config/components_with_service.ts diff --git a/src/common/config/components_with_service.ts b/src/common/config/components_with_service.ts new file mode 100644 index 0000000000..9775b8c6f6 --- /dev/null +++ b/src/common/config/components_with_service.ts @@ -0,0 +1,9 @@ +import { HomeAssistant } from "../../types"; + +/** Return an array of domains with the service. */ +export const componentsWithService = ( + hass: HomeAssistant, + service: string +): Array => + hass && + Object.keys(hass.services).filter((key) => service in hass.services[key]); diff --git a/src/panels/config/server_control/ha-config-server-control.ts b/src/panels/config/server_control/ha-config-server-control.ts index 04fbc5b237..62622baeab 100644 --- a/src/panels/config/server_control/ha-config-server-control.ts +++ b/src/panels/config/server_control/ha-config-server-control.ts @@ -12,7 +12,7 @@ import { property, TemplateResult, } from "lit-element"; -import { isServiceLoaded } from "../../../common/config/is_service_loaded"; +import { componentsWithService } from "../../../common/config/components_with_service"; import "../../../components/buttons/ha-call-service-button"; import "../../../components/ha-card"; import { checkCoreConfig } from "../../../data/core"; @@ -23,8 +23,6 @@ import { HomeAssistant, Route } from "../../../types"; import "../ha-config-section"; import { configSections } from "../ha-panel-config"; -const platformsWithReload = ["template"]; - @customElement("ha-config-server-control") export class HaConfigServerControl extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; @@ -51,13 +49,10 @@ export class HaConfigServerControl extends LitElement { changedProperties.has("hass") && (!oldHass || oldHass.config.components !== this.hass.config.components) ) { - this._reloadableDomains = this.hass.config.components - .concat(platformsWithReload) - .filter( - (component) => - !component.includes(".") && - isServiceLoaded(this.hass, component, "reload") - ); + this._reloadableDomains = componentsWithService( + this.hass, + "reload" + ).sort(); } } @@ -207,24 +202,23 @@ export class HaConfigServerControl extends LitElement { )} - ${this._reloadableDomains.map((domain) => - isServiceLoaded(this.hass, domain, "reload") - ? html`
- ${this.hass.localize( - `ui.panel.config.server_control.section.reloading.${domain}` - ) || - this.hass.localize( - "ui.panel.config.server_control.section.reloading.reload", - "domain", - domainToName(this.hass.localize, domain) - )} - -
` - : "" + ${this._reloadableDomains.map( + (domain) => + html`
+ ${this.hass.localize( + `ui.panel.config.server_control.section.reloading.${domain}` + ) || + this.hass.localize( + "ui.panel.config.server_control.section.reloading.reload", + "domain", + domainToName(this.hass.localize, domain) + )} + +
` )} `