Use runtime_data in fitbit (#137631)

This commit is contained in:
epenet 2025-02-07 09:53:39 +01:00 committed by GitHub
parent 0e443bf748
commit 27cb88db1a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 18 deletions

View File

@ -7,7 +7,7 @@ from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
from homeassistant.helpers import config_entry_oauth2_flow from homeassistant.helpers import config_entry_oauth2_flow
from . import api from . import api
from .const import DOMAIN, FitbitScope from .const import FitbitScope
from .coordinator import FitbitData, FitbitDeviceCoordinator from .coordinator import 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
@ -15,10 +15,11 @@ from .model import config_from_entry_data
PLATFORMS: list[Platform] = [Platform.SENSOR] PLATFORMS: list[Platform] = [Platform.SENSOR]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: type FitbitConfigEntry = ConfigEntry[FitbitData]
"""Set up fitbit from a config entry."""
hass.data.setdefault(DOMAIN, {})
async def async_setup_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bool:
"""Set up fitbit from a config entry."""
implementation = ( implementation = (
await config_entry_oauth2_flow.async_get_config_entry_implementation( await config_entry_oauth2_flow.async_get_config_entry_implementation(
hass, entry hass, entry
@ -41,18 +42,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
coordinator = FitbitDeviceCoordinator(hass, fitbit_api) coordinator = FitbitDeviceCoordinator(hass, fitbit_api)
await coordinator.async_config_entry_first_refresh() await coordinator.async_config_entry_first_refresh()
hass.data[DOMAIN][entry.entry_id] = FitbitData( entry.runtime_data = FitbitData(api=fitbit_api, device_coordinator=coordinator)
api=fitbit_api, device_coordinator=coordinator
)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@ -14,7 +14,6 @@ from homeassistant.components.sensor import (
SensorEntityDescription, SensorEntityDescription,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
PERCENTAGE, PERCENTAGE,
EntityCategory, EntityCategory,
@ -29,9 +28,10 @@ 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 FitbitData, FitbitDeviceCoordinator from .coordinator import 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
@ -131,7 +131,7 @@ class FitbitSensorEntityDescription(SensorEntityDescription):
def _build_device_info( def _build_device_info(
config_entry: ConfigEntry, entity_description: FitbitSensorEntityDescription config_entry: FitbitConfigEntry, entity_description: FitbitSensorEntityDescription
) -> DeviceInfo: ) -> DeviceInfo:
"""Build device info for sensor entities info across devices.""" """Build device info for sensor entities info across devices."""
unique_id = cast(str, config_entry.unique_id) unique_id = cast(str, config_entry.unique_id)
@ -524,12 +524,12 @@ FITBIT_RESOURCE_BATTERY_LEVEL = FitbitSensorEntityDescription(
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: FitbitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fitbit sensor platform.""" """Set up the Fitbit sensor platform."""
data: FitbitData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
api = data.api api = data.api
# These are run serially to reuse the cached user profile, not gathered # These are run serially to reuse the cached user profile, not gathered
@ -601,7 +601,7 @@ class FitbitSensor(SensorEntity):
def __init__( def __init__(
self, self,
config_entry: ConfigEntry, config_entry: FitbitConfigEntry,
api: FitbitApi, api: FitbitApi,
user_profile_id: str, user_profile_id: str,
description: FitbitSensorEntityDescription, description: FitbitSensorEntityDescription,