Delete removed channel devices in Youtube (#107907)

This commit is contained in:
Joost Lekkerkerker 2024-01-16 21:06:58 +01:00 committed by GitHub
parent 6173bfe873
commit bc9a85405e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 19 additions and 1 deletions

View File

@ -11,6 +11,7 @@ from homeassistant.helpers.config_entry_oauth2_flow import (
OAuth2Session,
async_get_config_entry_implementation,
)
import homeassistant.helpers.device_registry as dr
from .api import AsyncConfigEntryAuth
from .const import AUTH, COORDINATOR, DOMAIN
@ -37,11 +38,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
coordinator = YouTubeDataUpdateCoordinator(hass, auth)
await coordinator.async_config_entry_first_refresh()
await delete_devices(hass, entry, coordinator)
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = {
COORDINATOR: coordinator,
AUTH: auth,
}
await hass.config_entries.async_forward_entry_setups(entry, list(PLATFORMS))
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@ -52,3 +56,17 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
async def delete_devices(
hass: HomeAssistant, entry: ConfigEntry, coordinator: YouTubeDataUpdateCoordinator
) -> None:
"""Delete all devices created by integration."""
channel_ids = list(coordinator.data)
device_registry = dr.async_get(hass)
dev_entries = dr.async_entries_for_config_entry(device_registry, entry.entry_id)
for dev_entry in dev_entries:
if any(identifier[1] in channel_ids for identifier in dev_entry.identifiers):
device_registry.async_update_device(
dev_entry.id, remove_config_entry_id=entry.entry_id
)