mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
Add config_flow's seperated reaseon and more debug information (#131131)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
This commit is contained in:
parent
49eeb2d99e
commit
02f16ff568
@ -95,6 +95,7 @@ async def async_setup_coordinators(
|
||||
raise ConfigEntryNotReady(exc.message) from exc
|
||||
|
||||
if not bridge_list:
|
||||
_LOGGER.warning("No devices registered with the correct profile")
|
||||
return
|
||||
|
||||
# Setup coordinator per device.
|
||||
|
@ -6,7 +6,7 @@ import logging
|
||||
from typing import Any
|
||||
import uuid
|
||||
|
||||
from thinqconnect import ThinQApi, ThinQAPIException
|
||||
from thinqconnect import ThinQApi, ThinQAPIErrorCodes, ThinQAPIException
|
||||
from thinqconnect.country import Country
|
||||
import voluptuous as vol
|
||||
|
||||
@ -26,6 +26,13 @@ from .const import (
|
||||
)
|
||||
|
||||
SUPPORTED_COUNTRIES = [country.value for country in Country]
|
||||
THINQ_ERRORS = {
|
||||
ThinQAPIErrorCodes.INVALID_TOKEN: "invalid_token",
|
||||
ThinQAPIErrorCodes.NOT_ACCEPTABLE_TERMS: "not_acceptable_terms",
|
||||
ThinQAPIErrorCodes.NOT_ALLOWED_API_AGAIN: "not_allowed_api_again",
|
||||
ThinQAPIErrorCodes.NOT_SUPPORTED_COUNTRY: "not_supported_country",
|
||||
ThinQAPIErrorCodes.EXCEEDED_API_CALLS: "exceeded_api_calls",
|
||||
}
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -83,8 +90,9 @@ class ThinQFlowHandler(ConfigFlow, domain=DOMAIN):
|
||||
|
||||
try:
|
||||
return await self._validate_and_create_entry(access_token, country_code)
|
||||
except ThinQAPIException:
|
||||
errors["base"] = "token_unauthorized"
|
||||
except ThinQAPIException as exc:
|
||||
errors["base"] = THINQ_ERRORS.get(exc.code, "token_unauthorized")
|
||||
_LOGGER.error("Failed to validate access_token %s", exc)
|
||||
|
||||
return self.async_show_form(
|
||||
step_id="user",
|
||||
|
@ -77,5 +77,9 @@ async def async_setup_device_coordinator(
|
||||
coordinator = DeviceDataUpdateCoordinator(hass, ha_bridge)
|
||||
await coordinator.async_refresh()
|
||||
|
||||
_LOGGER.debug("Setup device's coordinator: %s", coordinator.device_name)
|
||||
_LOGGER.debug(
|
||||
"Setup device's coordinator: %s, model:%s",
|
||||
coordinator.device_name,
|
||||
coordinator.api.device.model_name,
|
||||
)
|
||||
return coordinator
|
||||
|
@ -51,7 +51,7 @@ class ThinQEntity(CoordinatorEntity[DeviceDataUpdateCoordinator]):
|
||||
self._attr_device_info = dr.DeviceInfo(
|
||||
identifiers={(DOMAIN, coordinator.unique_id)},
|
||||
manufacturer=COMPANY,
|
||||
model=coordinator.api.device.model_name,
|
||||
model=f"{coordinator.api.device.model_name} ({self.coordinator.api.device.device_type})",
|
||||
name=coordinator.device_name,
|
||||
)
|
||||
self._attr_unique_id = f"{coordinator.unique_id}_{self.property_id}"
|
||||
|
@ -167,7 +167,6 @@ class ThinQMQTT:
|
||||
|
||||
async def async_handle_device_event(self, message: dict) -> None:
|
||||
"""Handle received mqtt message."""
|
||||
_LOGGER.debug("async_handle_device_event: message=%s", message)
|
||||
unique_id = (
|
||||
f"{message["deviceId"]}_{list(message["report"].keys())[0]}"
|
||||
if message["deviceType"] == DeviceType.WASHTOWER
|
||||
@ -178,6 +177,12 @@ class ThinQMQTT:
|
||||
_LOGGER.error("Failed to handle device event: No device")
|
||||
return
|
||||
|
||||
_LOGGER.debug(
|
||||
"async_handle_device_event: %s, model:%s, message=%s",
|
||||
coordinator.device_name,
|
||||
coordinator.api.device.model_name,
|
||||
message,
|
||||
)
|
||||
push_type = message.get("pushType")
|
||||
|
||||
if push_type == DEVICE_STATUS_MESSAGE:
|
||||
|
@ -5,6 +5,12 @@
|
||||
"already_in_progress": "[%key:common::config_flow::abort::already_in_progress%]"
|
||||
},
|
||||
"error": {
|
||||
"invalid_token": "The token is not valid.",
|
||||
"not_acceptable_terms": "The service terms are not accepted.",
|
||||
"not_allowed_api_again": "The user does NOT have permission on the API call.",
|
||||
"not_supported_country": "The country is not supported.",
|
||||
"exceeded_api_calls": "The number of API calls has been exceeded.",
|
||||
"exceeded_user_api_calls": "The number of User API calls has been exceeded.",
|
||||
"token_unauthorized": "The token is invalid or unauthorized."
|
||||
},
|
||||
"step": {
|
||||
|
@ -50,7 +50,7 @@ async def test_config_flow_invalid_pat(
|
||||
data={CONF_ACCESS_TOKEN: MOCK_PAT, CONF_COUNTRY: MOCK_COUNTRY},
|
||||
)
|
||||
assert result["type"] is FlowResultType.FORM
|
||||
assert result["errors"] == {"base": "token_unauthorized"}
|
||||
assert result["errors"]
|
||||
mock_invalid_thinq_api.async_get_device_list.assert_called_once()
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user