Fix device name in zwave_js repair flow (#99414)

This commit is contained in:
Raman Gupta 2023-09-01 12:06:37 -04:00 committed by GitHub
parent 1d80af870d
commit 169a318ec4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 12 deletions

View File

@ -600,19 +600,16 @@ class NodeEvents:
# device config has changed, and if so, issue a repair registry entry for a # device config has changed, and if so, issue a repair registry entry for a
# possible reinterview # possible reinterview
if not node.is_controller_node and await node.async_has_device_config_changed(): if not node.is_controller_node and await node.async_has_device_config_changed():
device_name = device.name_by_user or device.name or "Unnamed device"
async_create_issue( async_create_issue(
self.hass, self.hass,
DOMAIN, DOMAIN,
f"device_config_file_changed.{device.id}", f"device_config_file_changed.{device.id}",
data={"device_id": device.id}, data={"device_id": device.id, "device_name": device_name},
is_fixable=True, is_fixable=True,
is_persistent=False, is_persistent=False,
translation_key="device_config_file_changed", translation_key="device_config_file_changed",
translation_placeholders={ translation_placeholders={"device_name": device_name},
"device_name": device.name_by_user
or device.name
or "Unnamed device"
},
severity=IssueSeverity.WARNING, severity=IssueSeverity.WARNING,
) )

View File

@ -1,8 +1,6 @@
"""Repairs for Z-Wave JS.""" """Repairs for Z-Wave JS."""
from __future__ import annotations from __future__ import annotations
from typing import cast
import voluptuous as vol import voluptuous as vol
from zwave_js_server.model.node import Node from zwave_js_server.model.node import Node
@ -16,9 +14,10 @@ from .helpers import async_get_node_from_device_id
class DeviceConfigFileChangedFlow(RepairsFlow): class DeviceConfigFileChangedFlow(RepairsFlow):
"""Handler for an issue fixing flow.""" """Handler for an issue fixing flow."""
def __init__(self, node: Node) -> None: def __init__(self, node: Node, device_name: str) -> None:
"""Initialize.""" """Initialize."""
self.node = node self.node = node
self.device_name = device_name
async def async_step_init( async def async_step_init(
self, user_input: dict[str, str] | None = None self, user_input: dict[str, str] | None = None
@ -34,17 +33,23 @@ class DeviceConfigFileChangedFlow(RepairsFlow):
self.hass.async_create_task(self.node.async_refresh_info()) self.hass.async_create_task(self.node.async_refresh_info())
return self.async_create_entry(title="", data={}) return self.async_create_entry(title="", data={})
return self.async_show_form(step_id="confirm", data_schema=vol.Schema({})) return self.async_show_form(
step_id="confirm",
data_schema=vol.Schema({}),
description_placeholders={"device_name": self.device_name},
)
async def async_create_fix_flow( async def async_create_fix_flow(
hass: HomeAssistant, hass: HomeAssistant,
issue_id: str, issue_id: str,
data: dict[str, str | int | float | None] | None, data: dict[str, str] | None,
) -> RepairsFlow: ) -> RepairsFlow:
"""Create flow.""" """Create flow."""
if issue_id.split(".")[0] == "device_config_file_changed": if issue_id.split(".")[0] == "device_config_file_changed":
assert data
return DeviceConfigFileChangedFlow( return DeviceConfigFileChangedFlow(
async_get_node_from_device_id(hass, cast(dict, data)["device_id"]) async_get_node_from_device_id(hass, data["device_id"]), data["device_name"]
) )
return ConfirmRepairFlow() return ConfirmRepairFlow()

View File

@ -77,6 +77,7 @@ async def test_device_config_file_changed(
flow_id = data["flow_id"] flow_id = data["flow_id"]
assert data["step_id"] == "confirm" assert data["step_id"] == "confirm"
assert data["description_placeholders"] == {"device_name": device.name}
# Apply fix # Apply fix
url = RepairsFlowResourceView.url.format(flow_id=flow_id) url = RepairsFlowResourceView.url.format(flow_id=flow_id)