Add device button on the Z-Wave controller's device page (#25636)

This commit is contained in:
Petar Petrov 2025-05-29 15:29:34 +03:00 committed by GitHub
parent 1485d1a1de
commit 414d46be65
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,6 +4,7 @@ import {
mdiDeleteForever, mdiDeleteForever,
mdiHospitalBox, mdiHospitalBox,
mdiInformation, mdiInformation,
mdiPlus,
mdiUpload, mdiUpload,
mdiWrench, mdiWrench,
} from "@mdi/js"; } from "@mdi/js";
@ -13,6 +14,7 @@ import {
fetchZwaveIntegrationSettings, fetchZwaveIntegrationSettings,
fetchZwaveIsAnyOTAFirmwareUpdateInProgress, fetchZwaveIsAnyOTAFirmwareUpdateInProgress,
fetchZwaveIsNodeFirmwareUpdateInProgress, fetchZwaveIsNodeFirmwareUpdateInProgress,
fetchZwaveNetworkStatus,
fetchZwaveNodeStatus, fetchZwaveNodeStatus,
} from "../../../../../../data/zwave_js"; } from "../../../../../../data/zwave_js";
import { showConfirmationDialog } from "../../../../../../dialogs/generic/show-dialog-box"; import { showConfirmationDialog } from "../../../../../../dialogs/generic/show-dialog-box";
@ -24,6 +26,7 @@ import { showZWaveJSRemoveFailedNodeDialog } from "../../../../integrations/inte
import { showZWaveJSUpdateFirmwareNodeDialog } from "../../../../integrations/integration-panels/zwave_js/show-dialog-zwave_js-update-firmware-node"; import { showZWaveJSUpdateFirmwareNodeDialog } from "../../../../integrations/integration-panels/zwave_js/show-dialog-zwave_js-update-firmware-node";
import type { DeviceAction } from "../../../ha-config-device-page"; import type { DeviceAction } from "../../../ha-config-device-page";
import { showZWaveJSHardResetControllerDialog } from "../../../../integrations/integration-panels/zwave_js/show-dialog-zwave_js-hard-reset-controller"; import { showZWaveJSHardResetControllerDialog } from "../../../../integrations/integration-panels/zwave_js/show-dialog-zwave_js-hard-reset-controller";
import { showZWaveJSAddNodeDialog } from "../../../../integrations/integration-panels/zwave_js/add-node/show-dialog-zwave_js-add-node";
export const getZwaveDeviceActions = async ( export const getZwaveDeviceActions = async (
el: HTMLElement, el: HTMLElement,
@ -160,6 +163,19 @@ export const getZwaveDeviceActions = async (
} }
if (nodeStatus.is_controller_node) { if (nodeStatus.is_controller_node) {
const networkStatus = await fetchZwaveNetworkStatus(hass, {
entry_id: entryId,
});
actions.unshift({
label: hass.localize("ui.panel.config.zwave_js.common.add_node"),
icon: mdiPlus,
action: async () => {
showZWaveJSAddNodeDialog(el, {
entry_id: entryId,
longRangeSupported: networkStatus.controller?.supports_long_range,
});
},
});
actions.push({ actions.push({
label: hass.localize( label: hass.localize(
"ui.panel.config.zwave_js.device_info.hard_reset_controller" "ui.panel.config.zwave_js.device_info.hard_reset_controller"