From cae5540c445c327c3006c1a093fcfc80ed9573ce Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Fri, 15 Nov 2024 18:40:38 +0200 Subject: [PATCH] ZWaveJS: Configuration.resetAll is only supported on CC v4+ (#22823) --- .../zwave_js/zwave_js-node-config.ts | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts index 6ae6654b41..30f1cde47b 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts @@ -22,12 +22,14 @@ import "../../../../../components/buttons/ha-progress-button"; import type { HaProgressButton } from "../../../../../components/buttons/ha-progress-button"; import { computeDeviceName } from "../../../../../data/device_registry"; import type { + ZWaveJSNodeCapabilities, ZWaveJSNodeConfigParam, ZWaveJSNodeConfigParams, ZWaveJSSetConfigParamResult, ZwaveJSNodeMetadata, } from "../../../../../data/zwave_js"; import { + fetchZwaveNodeCapabilities, fetchZwaveNodeConfigParameters, fetchZwaveNodeMetadata, invokeZWaveCCApi, @@ -68,6 +70,8 @@ class ZWaveJSNodeConfig extends LitElement { @state() private _config?: ZWaveJSNodeConfigParams; + @state() private _canResetAll = false; + @state() private _results: Record = {}; @state() private _error?: string; @@ -183,17 +187,19 @@ class ZWaveJSNodeConfig extends LitElement { ` )} -
- - ${this.hass.localize( - "ui.panel.config.zwave_js.node_config.reset_to_default.button_label" - )} - -
+ ${this._canResetAll + ? html`
+ + ${this.hass.localize( + "ui.panel.config.zwave_js.node_config.reset_to_default.button_label" + )} + +
` + : nothing}

${this.hass.localize( "ui.panel.config.zwave_js.node_config.custom_config" @@ -468,10 +474,19 @@ class ZWaveJSNodeConfig extends LitElement { return; } - [this._nodeMetadata, this._config] = await Promise.all([ + let capabilities: ZWaveJSNodeCapabilities | undefined; + [this._nodeMetadata, this._config, capabilities] = await Promise.all([ fetchZwaveNodeMetadata(this.hass, device.id), fetchZwaveNodeConfigParameters(this.hass, device.id), + fetchZwaveNodeCapabilities(this.hass, device.id), ]); + this._canResetAll = + capabilities && + Object.values(capabilities).some((endpoint) => + endpoint.some( + (capability) => capability.id === 0x70 && capability.version >= 4 + ) + ); } private async _openResetDialog(event: Event) {