diff --git a/homeassistant/components/life360/__init__.py b/homeassistant/components/life360/__init__.py index 66c9416a1c1..4527f6ac298 100644 --- a/homeassistant/components/life360/__init__.py +++ b/homeassistant/components/life360/__init__.py @@ -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 diff --git a/homeassistant/components/life360/device_tracker.py b/homeassistant/components/life360/device_tracker.py index a38181a6830..5a18422487e 100644 --- a/homeassistant/components/life360/device_tracker.py +++ b/homeassistant/components/life360/device_tracker.py @@ -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))