mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
Change backup listener calls for existing backup integrations (#138988)
This commit is contained in:
parent
4f5c7353f8
commit
3d507c7b44
@ -7,7 +7,7 @@ from collections.abc import Callable
|
|||||||
from google_drive_api.exceptions import GoogleDriveApiError
|
from google_drive_api.exceptions import GoogleDriveApiError
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import ConfigEntryNotReady
|
from homeassistant.exceptions import ConfigEntryNotReady
|
||||||
from homeassistant.helpers import instance_id
|
from homeassistant.helpers import instance_id
|
||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
@ -49,7 +49,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: GoogleDriveConfigEntry)
|
|||||||
except GoogleDriveApiError as err:
|
except GoogleDriveApiError as err:
|
||||||
raise ConfigEntryNotReady from err
|
raise ConfigEntryNotReady from err
|
||||||
|
|
||||||
_async_notify_backup_listeners_soon(hass)
|
def async_notify_backup_listeners() -> None:
|
||||||
|
for listener in hass.data.get(DATA_BACKUP_AGENT_LISTENERS, []):
|
||||||
|
listener()
|
||||||
|
|
||||||
|
entry.async_on_unload(entry.async_on_state_change(async_notify_backup_listeners))
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -58,15 +62,4 @@ async def async_unload_entry(
|
|||||||
hass: HomeAssistant, entry: GoogleDriveConfigEntry
|
hass: HomeAssistant, entry: GoogleDriveConfigEntry
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Unload a config entry."""
|
"""Unload a config entry."""
|
||||||
_async_notify_backup_listeners_soon(hass)
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def _async_notify_backup_listeners(hass: HomeAssistant) -> None:
|
|
||||||
for listener in hass.data.get(DATA_BACKUP_AGENT_LISTENERS, []):
|
|
||||||
listener()
|
|
||||||
|
|
||||||
|
|
||||||
@callback
|
|
||||||
def _async_notify_backup_listeners_soon(hass: HomeAssistant) -> None:
|
|
||||||
hass.loop.call_soon(_async_notify_backup_listeners, hass)
|
|
||||||
|
@ -17,7 +17,7 @@ from onedrive_personal_sdk.exceptions import (
|
|||||||
from onedrive_personal_sdk.models.items import Item, ItemUpdate
|
from onedrive_personal_sdk.models.items import Item, ItemUpdate
|
||||||
|
|
||||||
from homeassistant.const import CONF_ACCESS_TOKEN, Platform
|
from homeassistant.const import CONF_ACCESS_TOKEN, Platform
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
|
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
|
||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
from homeassistant.helpers.config_entry_oauth2_flow import (
|
from homeassistant.helpers.config_entry_oauth2_flow import (
|
||||||
@ -102,7 +102,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: OneDriveConfigEntry) ->
|
|||||||
translation_key="failed_to_migrate_files",
|
translation_key="failed_to_migrate_files",
|
||||||
) from err
|
) from err
|
||||||
|
|
||||||
_async_notify_backup_listeners_soon(hass)
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
async def update_listener(hass: HomeAssistant, entry: OneDriveConfigEntry) -> None:
|
async def update_listener(hass: HomeAssistant, entry: OneDriveConfigEntry) -> None:
|
||||||
@ -110,25 +109,20 @@ async def async_setup_entry(hass: HomeAssistant, entry: OneDriveConfigEntry) ->
|
|||||||
|
|
||||||
entry.async_on_unload(entry.add_update_listener(update_listener))
|
entry.async_on_unload(entry.add_update_listener(update_listener))
|
||||||
|
|
||||||
|
def async_notify_backup_listeners() -> None:
|
||||||
|
for listener in hass.data.get(DATA_BACKUP_AGENT_LISTENERS, []):
|
||||||
|
listener()
|
||||||
|
|
||||||
|
entry.async_on_unload(entry.async_on_state_change(async_notify_backup_listeners))
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
async def async_unload_entry(hass: HomeAssistant, entry: OneDriveConfigEntry) -> bool:
|
async def async_unload_entry(hass: HomeAssistant, entry: OneDriveConfigEntry) -> bool:
|
||||||
"""Unload a OneDrive config entry."""
|
"""Unload a OneDrive config entry."""
|
||||||
_async_notify_backup_listeners_soon(hass)
|
|
||||||
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
||||||
|
|
||||||
|
|
||||||
def _async_notify_backup_listeners(hass: HomeAssistant) -> None:
|
|
||||||
for listener in hass.data.get(DATA_BACKUP_AGENT_LISTENERS, []):
|
|
||||||
listener()
|
|
||||||
|
|
||||||
|
|
||||||
@callback
|
|
||||||
def _async_notify_backup_listeners_soon(hass: HomeAssistant) -> None:
|
|
||||||
hass.loop.call_soon(_async_notify_backup_listeners, hass)
|
|
||||||
|
|
||||||
|
|
||||||
async def _migrate_backup_files(client: OneDriveClient, backup_folder_id: str) -> None:
|
async def _migrate_backup_files(client: OneDriveClient, backup_folder_id: str) -> None:
|
||||||
"""Migrate backup files to metadata version 2."""
|
"""Migrate backup files to metadata version 2."""
|
||||||
files = await client.list_drive_items(backup_folder_id)
|
files = await client.list_drive_items(backup_folder_id)
|
||||||
|
@ -11,7 +11,7 @@ from synology_dsm.exceptions import SynologyDSMNotLoggedInException
|
|||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import CONF_MAC, CONF_SCAN_INTERVAL, CONF_VERIFY_SSL
|
from homeassistant.const import CONF_MAC, CONF_SCAN_INTERVAL, CONF_VERIFY_SSL
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import ConfigEntryNotReady
|
from homeassistant.exceptions import ConfigEntryNotReady
|
||||||
from homeassistant.helpers import device_registry as dr
|
from homeassistant.helpers import device_registry as dr
|
||||||
|
|
||||||
@ -131,7 +131,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
entry.async_on_unload(entry.add_update_listener(_async_update_listener))
|
entry.async_on_unload(entry.add_update_listener(_async_update_listener))
|
||||||
|
|
||||||
if entry.options[CONF_BACKUP_SHARE]:
|
if entry.options[CONF_BACKUP_SHARE]:
|
||||||
_async_notify_backup_listeners_soon(hass)
|
|
||||||
|
def async_notify_backup_listeners() -> None:
|
||||||
|
for listener in hass.data.get(DATA_BACKUP_AGENT_LISTENERS, []):
|
||||||
|
listener()
|
||||||
|
|
||||||
|
entry.async_on_unload(
|
||||||
|
entry.async_on_state_change(async_notify_backup_listeners)
|
||||||
|
)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -142,20 +149,9 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
entry_data: SynologyDSMData = hass.data[DOMAIN][entry.unique_id]
|
entry_data: SynologyDSMData = hass.data[DOMAIN][entry.unique_id]
|
||||||
await entry_data.api.async_unload()
|
await entry_data.api.async_unload()
|
||||||
hass.data[DOMAIN].pop(entry.unique_id)
|
hass.data[DOMAIN].pop(entry.unique_id)
|
||||||
_async_notify_backup_listeners_soon(hass)
|
|
||||||
return unload_ok
|
return unload_ok
|
||||||
|
|
||||||
|
|
||||||
def _async_notify_backup_listeners(hass: HomeAssistant) -> None:
|
|
||||||
for listener in hass.data.get(DATA_BACKUP_AGENT_LISTENERS, []):
|
|
||||||
listener()
|
|
||||||
|
|
||||||
|
|
||||||
@callback
|
|
||||||
def _async_notify_backup_listeners_soon(hass: HomeAssistant) -> None:
|
|
||||||
hass.loop.call_soon(_async_notify_backup_listeners, hass)
|
|
||||||
|
|
||||||
|
|
||||||
async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||||
"""Handle options update."""
|
"""Handle options update."""
|
||||||
await hass.config_entries.async_reload(entry.entry_id)
|
await hass.config_entries.async_reload(entry.entry_id)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user