mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 04:37:06 +00:00
Explicitly pass in the config_entry in fitbit coordinator (#137808)
explicitly pass in the config_entry in coordinator
This commit is contained in:
parent
78fce5112d
commit
daccb3e9b3
@ -1,6 +1,5 @@
|
|||||||
"""The fitbit component."""
|
"""The fitbit component."""
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.const import Platform
|
from homeassistant.const import Platform
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
|
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
|
||||||
@ -8,16 +7,13 @@ from homeassistant.helpers import config_entry_oauth2_flow
|
|||||||
|
|
||||||
from . import api
|
from . import api
|
||||||
from .const import FitbitScope
|
from .const import FitbitScope
|
||||||
from .coordinator import FitbitData, FitbitDeviceCoordinator
|
from .coordinator import FitbitConfigEntry, FitbitData, FitbitDeviceCoordinator
|
||||||
from .exceptions import FitbitApiException, FitbitAuthException
|
from .exceptions import FitbitApiException, FitbitAuthException
|
||||||
from .model import config_from_entry_data
|
from .model import config_from_entry_data
|
||||||
|
|
||||||
PLATFORMS: list[Platform] = [Platform.SENSOR]
|
PLATFORMS: list[Platform] = [Platform.SENSOR]
|
||||||
|
|
||||||
|
|
||||||
type FitbitConfigEntry = ConfigEntry[FitbitData]
|
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bool:
|
async def async_setup_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bool:
|
||||||
"""Set up fitbit from a config entry."""
|
"""Set up fitbit from a config entry."""
|
||||||
implementation = (
|
implementation = (
|
||||||
@ -39,7 +35,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bo
|
|||||||
fitbit_config = config_from_entry_data(entry.data)
|
fitbit_config = config_from_entry_data(entry.data)
|
||||||
coordinator: FitbitDeviceCoordinator | None = None
|
coordinator: FitbitDeviceCoordinator | None = None
|
||||||
if fitbit_config.is_allowed_resource(FitbitScope.DEVICE, "devices/battery"):
|
if fitbit_config.is_allowed_resource(FitbitScope.DEVICE, "devices/battery"):
|
||||||
coordinator = FitbitDeviceCoordinator(hass, fitbit_api)
|
coordinator = FitbitDeviceCoordinator(hass, entry, fitbit_api)
|
||||||
await coordinator.async_config_entry_first_refresh()
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
entry.runtime_data = FitbitData(api=fitbit_api, device_coordinator=coordinator)
|
entry.runtime_data = FitbitData(api=fitbit_api, device_coordinator=coordinator)
|
||||||
|
@ -6,6 +6,7 @@ import datetime
|
|||||||
import logging
|
import logging
|
||||||
from typing import Final
|
from typing import Final
|
||||||
|
|
||||||
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import ConfigEntryAuthFailed
|
from homeassistant.exceptions import ConfigEntryAuthFailed
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
@ -19,13 +20,25 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
UPDATE_INTERVAL: Final = datetime.timedelta(minutes=30)
|
UPDATE_INTERVAL: Final = datetime.timedelta(minutes=30)
|
||||||
TIMEOUT = 10
|
TIMEOUT = 10
|
||||||
|
|
||||||
|
type FitbitConfigEntry = ConfigEntry[FitbitData]
|
||||||
|
|
||||||
|
|
||||||
class FitbitDeviceCoordinator(DataUpdateCoordinator[dict[str, FitbitDevice]]):
|
class FitbitDeviceCoordinator(DataUpdateCoordinator[dict[str, FitbitDevice]]):
|
||||||
"""Coordinator for fetching fitbit devices from the API."""
|
"""Coordinator for fetching fitbit devices from the API."""
|
||||||
|
|
||||||
def __init__(self, hass: HomeAssistant, api: FitbitApi) -> None:
|
config_entry: FitbitConfigEntry
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self, hass: HomeAssistant, config_entry: FitbitConfigEntry, api: FitbitApi
|
||||||
|
) -> None:
|
||||||
"""Initialize FitbitDeviceCoordinator."""
|
"""Initialize FitbitDeviceCoordinator."""
|
||||||
super().__init__(hass, _LOGGER, name="Fitbit", update_interval=UPDATE_INTERVAL)
|
super().__init__(
|
||||||
|
hass,
|
||||||
|
_LOGGER,
|
||||||
|
config_entry=config_entry,
|
||||||
|
name="Fitbit",
|
||||||
|
update_interval=UPDATE_INTERVAL,
|
||||||
|
)
|
||||||
self._api = api
|
self._api = api
|
||||||
|
|
||||||
async def _async_update_data(self) -> dict[str, FitbitDevice]:
|
async def _async_update_data(self) -> dict[str, FitbitDevice]:
|
||||||
|
@ -28,10 +28,9 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
from homeassistant.helpers.icon import icon_for_battery_level
|
from homeassistant.helpers.icon import icon_for_battery_level
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
from . import FitbitConfigEntry
|
|
||||||
from .api import FitbitApi
|
from .api import FitbitApi
|
||||||
from .const import ATTRIBUTION, BATTERY_LEVELS, DOMAIN, FitbitScope, FitbitUnitSystem
|
from .const import ATTRIBUTION, BATTERY_LEVELS, DOMAIN, FitbitScope, FitbitUnitSystem
|
||||||
from .coordinator import FitbitDeviceCoordinator
|
from .coordinator import FitbitConfigEntry, FitbitDeviceCoordinator
|
||||||
from .exceptions import FitbitApiException, FitbitAuthException
|
from .exceptions import FitbitApiException, FitbitAuthException
|
||||||
from .model import FitbitDevice, config_from_entry_data
|
from .model import FitbitDevice, config_from_entry_data
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user