Skip to content

Commit ff42353

Browse files
authored
Use runtime_data in fivem (#137632)
1 parent 60fd07f commit ff42353

File tree

4 files changed

+27
-27
lines changed

4 files changed

+27
-27
lines changed

homeassistant/components/fivem/__init__.py

+6-11
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,26 @@
66

77
from fivem import FiveMServerOfflineError
88

9-
from homeassistant.config_entries import ConfigEntry
109
from homeassistant.const import CONF_HOST, CONF_PORT, Platform
1110
from homeassistant.core import HomeAssistant
1211
from homeassistant.exceptions import ConfigEntryNotReady
1312

14-
from .const import DOMAIN
15-
from .coordinator import FiveMDataUpdateCoordinator
13+
from .coordinator import FiveMConfigEntry, FiveMDataUpdateCoordinator
1614

1715
PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.SENSOR]
1816

1917
_LOGGER = logging.getLogger(__name__)
2018

2119

22-
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
20+
async def async_setup_entry(hass: HomeAssistant, entry: FiveMConfigEntry) -> bool:
2321
"""Set up FiveM from a config entry."""
2422
_LOGGER.debug(
2523
"Create FiveM server instance for '%s:%s'",
2624
entry.data[CONF_HOST],
2725
entry.data[CONF_PORT],
2826
)
2927

30-
coordinator = FiveMDataUpdateCoordinator(hass, entry.data, entry.entry_id)
28+
coordinator = FiveMDataUpdateCoordinator(hass, entry)
3129

3230
try:
3331
await coordinator.initialize()
@@ -36,16 +34,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
3634

3735
await coordinator.async_config_entry_first_refresh()
3836

39-
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
37+
entry.runtime_data = coordinator
4038

4139
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
4240

4341
return True
4442

4543

46-
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
44+
async def async_unload_entry(hass: HomeAssistant, entry: FiveMConfigEntry) -> bool:
4745
"""Unload a config entry."""
48-
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
49-
hass.data[DOMAIN].pop(entry.entry_id)
50-
51-
return unload_ok
46+
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

homeassistant/components/fivem/binary_sensor.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
BinarySensorEntity,
88
BinarySensorEntityDescription,
99
)
10-
from homeassistant.config_entries import ConfigEntry
1110
from homeassistant.core import HomeAssistant
1211
from homeassistant.helpers.entity_platform import AddEntitiesCallback
1312

14-
from .const import DOMAIN, NAME_STATUS
13+
from .const import NAME_STATUS
14+
from .coordinator import FiveMConfigEntry
1515
from .entity import FiveMEntity, FiveMEntityDescription
1616

1717

@@ -33,11 +33,11 @@ class FiveMBinarySensorEntityDescription(
3333

3434
async def async_setup_entry(
3535
hass: HomeAssistant,
36-
entry: ConfigEntry,
36+
entry: FiveMConfigEntry,
3737
async_add_entities: AddEntitiesCallback,
3838
) -> None:
3939
"""Set up the FiveM binary sensor platform."""
40-
coordinator = hass.data[DOMAIN][entry.entry_id]
40+
coordinator = entry.runtime_data
4141

4242
async_add_entities(
4343
[FiveMSensorEntity(coordinator, description) for description in BINARY_SENSORS]

homeassistant/components/fivem/coordinator.py

+14-8
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
from __future__ import annotations
44

5-
from collections.abc import Mapping
65
from datetime import timedelta
76
import logging
87
from typing import Any
98

109
from fivem import FiveM, FiveMServerOfflineError
1110

11+
from homeassistant.config_entries import ConfigEntry
1212
from homeassistant.const import CONF_HOST, CONF_PORT
1313
from homeassistant.core import HomeAssistant
1414
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
@@ -26,26 +26,32 @@
2626

2727
_LOGGER = logging.getLogger(__name__)
2828

29+
type FiveMConfigEntry = ConfigEntry[FiveMDataUpdateCoordinator]
30+
2931

3032
class FiveMDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]):
3133
"""Class to manage fetching FiveM data."""
3234

33-
def __init__(
34-
self, hass: HomeAssistant, config_data: Mapping[str, Any], unique_id: str
35-
) -> None:
35+
def __init__(self, hass: HomeAssistant, entry: FiveMConfigEntry) -> None:
3636
"""Initialize server instance."""
37-
self.unique_id = unique_id
37+
self.unique_id = entry.entry_id
3838
self.server = None
3939
self.version = None
4040
self.game_name: str | None = None
4141

42-
self.host = config_data[CONF_HOST]
42+
self.host = entry.data[CONF_HOST]
4343

44-
self._fivem = FiveM(self.host, config_data[CONF_PORT])
44+
self._fivem = FiveM(self.host, entry.data[CONF_PORT])
4545

4646
update_interval = timedelta(seconds=SCAN_INTERVAL)
4747

48-
super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=update_interval)
48+
super().__init__(
49+
hass,
50+
_LOGGER,
51+
config_entry=entry,
52+
name=DOMAIN,
53+
update_interval=update_interval,
54+
)
4955

5056
async def initialize(self) -> None:
5157
"""Initialize the FiveM server."""

homeassistant/components/fivem/sensor.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,21 @@
33
from dataclasses import dataclass
44

55
from homeassistant.components.sensor import SensorEntity, SensorEntityDescription
6-
from homeassistant.config_entries import ConfigEntry
76
from homeassistant.core import HomeAssistant
87
from homeassistant.helpers.entity_platform import AddEntitiesCallback
98
from homeassistant.helpers.typing import StateType
109

1110
from .const import (
1211
ATTR_PLAYERS_LIST,
1312
ATTR_RESOURCES_LIST,
14-
DOMAIN,
1513
NAME_PLAYERS_MAX,
1614
NAME_PLAYERS_ONLINE,
1715
NAME_RESOURCES,
1816
UNIT_PLAYERS_MAX,
1917
UNIT_PLAYERS_ONLINE,
2018
UNIT_RESOURCES,
2119
)
20+
from .coordinator import FiveMConfigEntry
2221
from .entity import FiveMEntity, FiveMEntityDescription
2322

2423

@@ -50,11 +49,11 @@ class FiveMSensorEntityDescription(SensorEntityDescription, FiveMEntityDescripti
5049

5150
async def async_setup_entry(
5251
hass: HomeAssistant,
53-
entry: ConfigEntry,
52+
entry: FiveMConfigEntry,
5453
async_add_entities: AddEntitiesCallback,
5554
) -> None:
5655
"""Set up the FiveM sensor platform."""
57-
coordinator = hass.data[DOMAIN][entry.entry_id]
56+
coordinator = entry.runtime_data
5857

5958
# Add sensor entities.
6059
async_add_entities(

0 commit comments

Comments
 (0)