Skip to content

Commit

Permalink
Merge pull request #65 from jdejaegh/64-async_config_entry_first_refresh
Browse files Browse the repository at this point in the history
Fix 'irm_kmi' uses `async_config_entry_first_refresh`, which is only supported for coordinators with a config entry
  • Loading branch information
jdejaegh authored Dec 29, 2024
2 parents fe412df + 4978a92 commit 34cb9e1
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 10 deletions.
3 changes: 1 addition & 2 deletions custom_components/irm_kmi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:

async def async_reload_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
"""Reload config entry."""
await async_unload_entry(hass, entry)
await async_setup_entry(hass, entry)
await hass.config_entries.async_reload(entry.entry_id)


async def async_migrate_entry(hass, config_entry: ConfigEntry):
Expand Down
16 changes: 8 additions & 8 deletions custom_components/irm_kmi/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ def __init__(self, hass: HomeAssistant, entry: ConfigEntry):
super().__init__(
hass,
_LOGGER,
config_entry=entry,
# Name of the data. For logging purposes.
name="IRM KMI weather",
# Polling interval. Will only be polled if there are subscribers.
Expand All @@ -52,11 +53,10 @@ def __init__(self, hass: HomeAssistant, entry: ConfigEntry):
self._zone = get_config_value(entry, CONF_ZONE)
self._dark_mode = get_config_value(entry, CONF_DARK_MODE)
self._style = get_config_value(entry, CONF_STYLE)
self._config_entry = entry
self.shared_device_info = DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, entry.entry_id)},
manufacturer=IRM_KMI_NAME.get(preferred_language(self.hass, self._config_entry)),
manufacturer=IRM_KMI_NAME.get(preferred_language(self.hass, self.config_entry)),
name=f"{entry.title}"
)

Expand Down Expand Up @@ -89,10 +89,10 @@ async def _async_update_data(self) -> ProcessedCoordinatorData:
f"Last success time is: {self.last_update_success_time}")

if api_data.get('cityName', None) in OUT_OF_BENELUX:
_LOGGER.error(f"The zone {self._zone} is now out of Benelux and forecast is only available in Benelux."
_LOGGER.error(f"The zone {self._zone} is now out of Benelux and forecast is only available in Benelux. "
f"Associated device is now disabled. Move the zone back in Benelux and re-enable to fix "
f"this")
disable_from_config(self.hass, self._config_entry)
disable_from_config(self.hass, self.config_entry)

issue_registry.async_create_issue(
self.hass,
Expand All @@ -101,7 +101,7 @@ async def _async_update_data(self) -> ProcessedCoordinatorData:
is_fixable=True,
severity=issue_registry.IssueSeverity.ERROR,
translation_key='zone_moved',
data={'config_entry_id': self._config_entry.entry_id, 'zone': self._zone},
data={'config_entry_id': self.config_entry.entry_id, 'zone': self._zone},
translation_placeholders={'zone': self._zone}
)
return ProcessedCoordinatorData()
Expand Down Expand Up @@ -131,7 +131,7 @@ async def _async_animation_data(self, api_data: dict) -> RadarAnimationData:
localisation = images_from_api[0]
images_from_api = images_from_api[1:]

lang = preferred_language(self.hass, self._config_entry)
lang = preferred_language(self.hass, self.config_entry)
radar_animation = RadarAnimationData(
hint=api_data.get('animation', {}).get('sequenceHint', {}).get(lang),
unit=api_data.get('animation', {}).get('unit', {}).get(lang),
Expand Down Expand Up @@ -367,7 +367,7 @@ async def daily_list_to_forecast(self, data: List[dict] | None) -> List[IrmKmiFo
return None

forecasts = list()
lang = preferred_language(self.hass, self._config_entry)
lang = preferred_language(self.hass, self.config_entry)
tz = await dt.async_get_time_zone('Europe/Brussels')
forecast_day = dt.now(tz)

Expand Down Expand Up @@ -502,7 +502,7 @@ def warnings_from_data(self, warning_data: list | None) -> List[WarningData]:
if warning_data is None or not isinstance(warning_data, list) or len(warning_data) == 0:
return []

lang = preferred_language(self.hass, self._config_entry)
lang = preferred_language(self.hass, self.config_entry)
result = list()
for data in warning_data:
try:
Expand Down

0 comments on commit 34cb9e1

Please sign in to comment.