Reload braviatv entry after options update (#34576)
* Reload entry after options update * Undo update listener when unloading
This commit is contained in:
parent
15569f1e7f
commit
58bff0a183
4 changed files with 21 additions and 4 deletions
|
@ -5,7 +5,7 @@ from bravia_tv import BraviaRC
|
|||
|
||||
from homeassistant.const import CONF_HOST, CONF_MAC
|
||||
|
||||
from .const import DOMAIN
|
||||
from .const import BRAVIARC, DOMAIN, UNDO_UPDATE_LISTENER
|
||||
|
||||
PLATFORMS = ["media_player"]
|
||||
|
||||
|
@ -20,8 +20,13 @@ async def async_setup_entry(hass, config_entry):
|
|||
host = config_entry.data[CONF_HOST]
|
||||
mac = config_entry.data[CONF_MAC]
|
||||
|
||||
undo_listener = config_entry.add_update_listener(update_listener)
|
||||
|
||||
hass.data.setdefault(DOMAIN, {})
|
||||
hass.data[DOMAIN][config_entry.entry_id] = BraviaRC(host, mac)
|
||||
hass.data[DOMAIN][config_entry.entry_id] = {
|
||||
BRAVIARC: BraviaRC(host, mac),
|
||||
UNDO_UPDATE_LISTENER: undo_listener,
|
||||
}
|
||||
|
||||
for component in PLATFORMS:
|
||||
hass.async_create_task(
|
||||
|
@ -41,7 +46,15 @@ async def async_unload_entry(hass, config_entry):
|
|||
]
|
||||
)
|
||||
)
|
||||
|
||||
hass.data[DOMAIN][config_entry.entry_id][UNDO_UPDATE_LISTENER]()
|
||||
|
||||
if unload_ok:
|
||||
hass.data[DOMAIN].pop(config_entry.entry_id)
|
||||
|
||||
return unload_ok
|
||||
|
||||
|
||||
async def update_listener(hass, config_entry):
|
||||
"""Handle options update."""
|
||||
await hass.config_entries.async_reload(config_entry.entry_id)
|
||||
|
|
|
@ -15,6 +15,7 @@ from .const import ( # pylint:disable=unused-import
|
|||
ATTR_CID,
|
||||
ATTR_MAC,
|
||||
ATTR_MODEL,
|
||||
BRAVIARC,
|
||||
CLIENTID_PREFIX,
|
||||
CONF_IGNORED_SOURCES,
|
||||
DOMAIN,
|
||||
|
@ -152,7 +153,7 @@ class BraviaTVOptionsFlowHandler(config_entries.OptionsFlow):
|
|||
|
||||
async def async_step_init(self, user_input=None):
|
||||
"""Manage the options."""
|
||||
self.braviarc = self.hass.data[DOMAIN][self.config_entry.entry_id]
|
||||
self.braviarc = self.hass.data[DOMAIN][self.config_entry.entry_id][BRAVIARC]
|
||||
if not self.braviarc.is_connected():
|
||||
await self.hass.async_add_executor_job(
|
||||
self.braviarc.connect, self.pin, CLIENTID_PREFIX, NICKNAME,
|
||||
|
|
|
@ -6,8 +6,10 @@ ATTR_MODEL = "model"
|
|||
|
||||
CONF_IGNORED_SOURCES = "ignored_sources"
|
||||
|
||||
BRAVIARC = "braviarc"
|
||||
BRAVIA_CONFIG_FILE = "bravia.conf"
|
||||
CLIENTID_PREFIX = "HomeAssistant"
|
||||
DEFAULT_NAME = f"{ATTR_MANUFACTURER} Bravia TV"
|
||||
DOMAIN = "braviatv"
|
||||
NICKNAME = "Home Assistant"
|
||||
UNDO_UPDATE_LISTENER = "undo_update_listener"
|
||||
|
|
|
@ -30,6 +30,7 @@ from homeassistant.util.json import load_json
|
|||
from .const import (
|
||||
ATTR_MANUFACTURER,
|
||||
BRAVIA_CONFIG_FILE,
|
||||
BRAVIARC,
|
||||
CLIENTID_PREFIX,
|
||||
CONF_IGNORED_SOURCES,
|
||||
DEFAULT_NAME,
|
||||
|
@ -103,7 +104,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
|
|||
"model": config_entry.title,
|
||||
}
|
||||
|
||||
braviarc = hass.data[DOMAIN][config_entry.entry_id]
|
||||
braviarc = hass.data[DOMAIN][config_entry.entry_id][BRAVIARC]
|
||||
|
||||
ignored_sources = config_entry.options.get(CONF_IGNORED_SOURCES, [])
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue