Explicitly pass in the config_entry in fitbit coordinator (#137808)
explicitly pass in the config_entry in coordinatorpull/137849/head
parent
78fce5112d
commit
daccb3e9b3
|
@ -1,6 +1,5 @@
|
|||
"""The fitbit component."""
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
|
||||
|
@ -8,16 +7,13 @@ from homeassistant.helpers import config_entry_oauth2_flow
|
|||
|
||||
from . import api
|
||||
from .const import FitbitScope
|
||||
from .coordinator import FitbitData, FitbitDeviceCoordinator
|
||||
from .coordinator import FitbitConfigEntry, FitbitData, FitbitDeviceCoordinator
|
||||
from .exceptions import FitbitApiException, FitbitAuthException
|
||||
from .model import config_from_entry_data
|
||||
|
||||
PLATFORMS: list[Platform] = [Platform.SENSOR]
|
||||
|
||||
|
||||
type FitbitConfigEntry = ConfigEntry[FitbitData]
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bool:
|
||||
"""Set up fitbit from a config entry."""
|
||||
implementation = (
|
||||
|
@ -39,7 +35,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bo
|
|||
fitbit_config = config_from_entry_data(entry.data)
|
||||
coordinator: FitbitDeviceCoordinator | None = None
|
||||
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()
|
||||
|
||||
entry.runtime_data = FitbitData(api=fitbit_api, device_coordinator=coordinator)
|
||||
|
|
|
@ -6,6 +6,7 @@ import datetime
|
|||
import logging
|
||||
from typing import Final
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import ConfigEntryAuthFailed
|
||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||
|
@ -19,13 +20,25 @@ _LOGGER = logging.getLogger(__name__)
|
|||
UPDATE_INTERVAL: Final = datetime.timedelta(minutes=30)
|
||||
TIMEOUT = 10
|
||||
|
||||
type FitbitConfigEntry = ConfigEntry[FitbitData]
|
||||
|
||||
|
||||
class FitbitDeviceCoordinator(DataUpdateCoordinator[dict[str, FitbitDevice]]):
|
||||
"""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."""
|
||||
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
|
||||
|
||||
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.update_coordinator import CoordinatorEntity
|
||||
|
||||
from . import FitbitConfigEntry
|
||||
from .api import FitbitApi
|
||||
from .const import ATTRIBUTION, BATTERY_LEVELS, DOMAIN, FitbitScope, FitbitUnitSystem
|
||||
from .coordinator import FitbitDeviceCoordinator
|
||||
from .coordinator import FitbitConfigEntry, FitbitDeviceCoordinator
|
||||
from .exceptions import FitbitApiException, FitbitAuthException
|
||||
from .model import FitbitDevice, config_from_entry_data
|
||||
|
||||
|
|
Loading…
Reference in New Issue