From 90e402eca53d37dd6b8cbf49da1fc18b99b9696a Mon Sep 17 00:00:00 2001 From: jjlawren Date: Thu, 16 Jun 2022 00:21:39 -0500 Subject: [PATCH] Allow removing Sonos devices (#73567) --- homeassistant/components/sonos/__init__.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/sonos/__init__.py b/homeassistant/components/sonos/__init__.py index 1d7acd8d8dc..c26bf269a30 100644 --- a/homeassistant/components/sonos/__init__.py +++ b/homeassistant/components/sonos/__init__.py @@ -21,7 +21,7 @@ from homeassistant.components.media_player import DOMAIN as MP_DOMAIN from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOSTS, EVENT_HOMEASSISTANT_STOP from homeassistant.core import Event, HomeAssistant, callback -from homeassistant.helpers import config_validation as cv +from homeassistant.helpers import config_validation as cv, device_registry as dr from homeassistant.helpers.dispatcher import async_dispatcher_send, dispatcher_send from homeassistant.helpers.event import async_track_time_interval, call_later from homeassistant.helpers.typing import ConfigType @@ -396,3 +396,17 @@ class SonosDiscoveryManager: AVAILABILITY_CHECK_INTERVAL, ) ) + + +async def async_remove_config_entry_device( + hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry +) -> bool: + """Remove Sonos config entry from a device.""" + known_devices = hass.data[DATA_SONOS].discovered.keys() + for identifier in device_entry.identifiers: + if identifier[0] != DOMAIN: + continue + uid = identifier[1] + if uid not in known_devices: + return True + return False