mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 03:37:07 +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."""
|
"""Integration data."""
|
||||||
|
|
||||||
cfg_options: dict[str, Any] | None = None
|
cfg_options: dict[str, Any] | None = None
|
||||||
# ConfigEntry.unique_id: Life360DataUpdateCoordinator
|
# ConfigEntry.entry_id: Life360DataUpdateCoordinator
|
||||||
coordinators: dict[str, Life360DataUpdateCoordinator] = field(
|
coordinators: dict[str, Life360DataUpdateCoordinator] = field(
|
||||||
init=False, default_factory=dict
|
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)
|
tracked_members: dict[str, str] = field(init=False, default_factory=dict)
|
||||||
logged_circles: list[str] = field(init=False, default_factory=list)
|
logged_circles: list[str] = field(init=False, default_factory=list)
|
||||||
logged_places: 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:
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||||
"""Unload config entry."""
|
"""Unload config entry."""
|
||||||
del hass.data[DOMAIN].coordinators[entry.entry_id]
|
|
||||||
|
|
||||||
# Unload components for our platforms.
|
# 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 = []
|
new_entities = []
|
||||||
for member_id, member in coordinator.data.members.items():
|
for member_id, member in coordinator.data.members.items():
|
||||||
tracked_by_account = tracked_members.get(member_id)
|
tracked_by_entry = tracked_members.get(member_id)
|
||||||
if new_member := not tracked_by_account:
|
if new_member := not tracked_by_entry:
|
||||||
tracked_members[member_id] = entry.unique_id
|
tracked_members[member_id] = entry.entry_id
|
||||||
LOGGER.debug("Member: %s", member.name)
|
LOGGER.debug("Member: %s (%s)", member.name, entry.unique_id)
|
||||||
if (
|
if (
|
||||||
new_member
|
new_member
|
||||||
or tracked_by_account == entry.unique_id
|
or tracked_by_entry == entry.entry_id
|
||||||
and not new_members_only
|
and not new_members_only
|
||||||
):
|
):
|
||||||
new_entities.append(Life360DeviceTracker(coordinator, member_id))
|
new_entities.append(Life360DeviceTracker(coordinator, member_id))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user