Adjust async_step_reauth in broadlink (#74168)

This commit is contained in:
epenet 2022-06-29 11:53:35 +02:00 committed by GitHub
parent 9c991d9c6f
commit 2fce301b34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,8 +1,10 @@
"""Config flow for Broadlink devices.""" """Config flow for Broadlink devices."""
from collections.abc import Mapping
import errno import errno
from functools import partial from functools import partial
import logging import logging
import socket import socket
from typing import Any
import broadlink as blk import broadlink as blk
from broadlink.exceptions import ( from broadlink.exceptions import (
@ -12,9 +14,10 @@ from broadlink.exceptions import (
) )
import voluptuous as vol import voluptuous as vol
from homeassistant import config_entries, data_entry_flow from homeassistant import config_entries
from homeassistant.components import dhcp from homeassistant.components import dhcp
from homeassistant.const import CONF_HOST, CONF_MAC, CONF_NAME, CONF_TIMEOUT, CONF_TYPE from homeassistant.const import CONF_HOST, CONF_MAC, CONF_NAME, CONF_TIMEOUT, CONF_TYPE
from homeassistant.data_entry_flow import AbortFlow, FlowResult
from homeassistant.helpers import config_validation as cv from homeassistant.helpers import config_validation as cv
from .const import DEFAULT_PORT, DEFAULT_TIMEOUT, DEVICE_TYPES, DOMAIN from .const import DEFAULT_PORT, DEFAULT_TIMEOUT, DEVICE_TYPES, DOMAIN
@ -40,7 +43,7 @@ class BroadlinkFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
"an issue at https://github.com/home-assistant/core/issues", "an issue at https://github.com/home-assistant/core/issues",
hex(device.devtype), hex(device.devtype),
) )
raise data_entry_flow.AbortFlow("not_supported") raise AbortFlow("not_supported")
await self.async_set_unique_id( await self.async_set_unique_id(
device.mac.hex(), raise_on_progress=raise_on_progress device.mac.hex(), raise_on_progress=raise_on_progress
@ -53,9 +56,7 @@ class BroadlinkFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
"host": device.host[0], "host": device.host[0],
} }
async def async_step_dhcp( async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowResult:
self, discovery_info: dhcp.DhcpServiceInfo
) -> data_entry_flow.FlowResult:
"""Handle dhcp discovery.""" """Handle dhcp discovery."""
host = discovery_info.ip host = discovery_info.ip
unique_id = discovery_info.macaddress.lower().replace(":", "") unique_id = discovery_info.macaddress.lower().replace(":", "")
@ -300,14 +301,14 @@ class BroadlinkFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
self._async_abort_entries_match({CONF_HOST: import_info[CONF_HOST]}) self._async_abort_entries_match({CONF_HOST: import_info[CONF_HOST]})
return await self.async_step_user(import_info) return await self.async_step_user(import_info)
async def async_step_reauth(self, data): async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Reauthenticate to the device.""" """Reauthenticate to the device."""
device = blk.gendevice( device = blk.gendevice(
data[CONF_TYPE], entry_data[CONF_TYPE],
(data[CONF_HOST], DEFAULT_PORT), (entry_data[CONF_HOST], DEFAULT_PORT),
bytes.fromhex(data[CONF_MAC]), bytes.fromhex(entry_data[CONF_MAC]),
name=data[CONF_NAME], name=entry_data[CONF_NAME],
) )
device.timeout = data[CONF_TIMEOUT] device.timeout = entry_data[CONF_TIMEOUT]
await self.async_set_device(device) await self.async_set_device(device)
return await self.async_step_reset() return await self.async_step_reset()