mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Fix Life360 unload (#74263)
* Fix life360 async_unload_entry * Update tracked_members when unloading config entry
This commit is contained in:
parent
f311d53c60
commit
1bdd93cc77
@ -124,11 +124,11 @@ class IntegData:
|
||||
"""Integration data."""
|
||||
|
||||
cfg_options: dict[str, Any] | None = None
|
||||
# ConfigEntry.unique_id: Life360DataUpdateCoordinator
|
||||
# ConfigEntry.entry_id: Life360DataUpdateCoordinator
|
||||
coordinators: dict[str, Life360DataUpdateCoordinator] = field(
|
||||
init=False, default_factory=dict
|
||||
)
|
||||
# member_id: ConfigEntry.unique_id
|
||||
# member_id: ConfigEntry.entry_id
|
||||
tracked_members: dict[str, str] = field(init=False, default_factory=dict)
|
||||
logged_circles: list[str] = field(init=False, default_factory=list)
|
||||
logged_places: list[str] = field(init=False, default_factory=list)
|
||||
@ -171,7 +171,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
"""Unload config entry."""
|
||||
del hass.data[DOMAIN].coordinators[entry.entry_id]
|
||||
|
||||
# Unload components for our platforms.
|
||||
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
||||
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
|
||||
del hass.data[DOMAIN].coordinators[entry.entry_id]
|
||||
# Remove any members that were tracked by this entry.
|
||||
for member_id, entry_id in hass.data[DOMAIN].tracked_members.copy().items():
|
||||
if entry_id == entry.entry_id:
|
||||
del hass.data[DOMAIN].tracked_members[member_id]
|
||||
|
||||
return unload_ok
|
||||
|
@ -78,13 +78,13 @@ async def async_setup_entry(
|
||||
|
||||
new_entities = []
|
||||
for member_id, member in coordinator.data.members.items():
|
||||
tracked_by_account = tracked_members.get(member_id)
|
||||
if new_member := not tracked_by_account:
|
||||
tracked_members[member_id] = entry.unique_id
|
||||
LOGGER.debug("Member: %s", member.name)
|
||||
tracked_by_entry = tracked_members.get(member_id)
|
||||
if new_member := not tracked_by_entry:
|
||||
tracked_members[member_id] = entry.entry_id
|
||||
LOGGER.debug("Member: %s (%s)", member.name, entry.unique_id)
|
||||
if (
|
||||
new_member
|
||||
or tracked_by_account == entry.unique_id
|
||||
or tracked_by_entry == entry.entry_id
|
||||
and not new_members_only
|
||||
):
|
||||
new_entities.append(Life360DeviceTracker(coordinator, member_id))
|
||||
|
Loading…
x
Reference in New Issue
Block a user