Skip to content

Commit

Permalink
Merge pull request #74 from maorcc/remove-startup-blocking-call
Browse files Browse the repository at this point in the history
remove startup blocking call
  • Loading branch information
elad-bar committed Jun 20, 2024
2 parents 898d913 + b09a3da commit 0f3253c
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 20 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## v3.0.5

- Remove startup blocking call

## v3.0.4

- Fix login issue while set up integration

## v3.0.3

- Fix state class to total
Expand Down
43 changes: 28 additions & 15 deletions custom_components/citymind_water_meter/managers/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from homeassistant.components.homeassistant import SERVICE_RELOAD_CONFIG_ENTRY
from homeassistant.const import ATTR_STATE
from homeassistant.core import Event
from homeassistant.core import Event, callback
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.dispatcher import (
async_dispatcher_connect,
Expand Down Expand Up @@ -76,20 +76,6 @@ def __init__(self, hass, config_manager: ConfigManager):

_LOGGER.debug("Initializing")

entry = config_manager.entry

signal_handlers = {
SIGNAL_API_STATUS: self._on_api_status_changed,
SIGNAL_DATA_CHANGED: self._on_data_changed,
}

_LOGGER.debug(f"Registering signals for {signal_handlers.keys()}")

for signal in signal_handlers:
handler = signal_handlers[signal]

entry.async_on_unload(async_dispatcher_connect(hass, signal, handler))

config_data = config_manager.config_data
analytic_periods = config_manager.analytic_periods
entry_id = config_manager.entry_id
Expand All @@ -115,6 +101,8 @@ def __init__(self, hass, config_manager: ConfigManager):
EntityType.METER: self._meter_processor,
}

self._load_signal_handlers()

_LOGGER.debug("Initializing done")

@property
Expand Down Expand Up @@ -156,6 +144,31 @@ async def initialize(self):

await self._api.initialize()

def _load_signal_handlers(self):
loop = self.hass.loop

@callback
def on_api_status_changed(entry_id: str, status: ConnectivityStatus):
loop.create_task(self._on_api_status_changed(entry_id, status)).__await__()

@callback
def on_data_changed(entry_id: str):
loop.create_task(self._on_data_changed(entry_id)).__await__()

signal_handlers = {
SIGNAL_API_STATUS: self._on_api_status_changed,
SIGNAL_DATA_CHANGED: self._on_data_changed,
}

_LOGGER.debug(f"Registering signals for {signal_handlers.keys()}")

for signal in signal_handlers:
handler = signal_handlers[signal]

self._config_manager.entry.async_on_unload(
async_dispatcher_connect(self.hass, signal, handler)
)

def get_debug_data(self) -> dict:
config_data = self._config_manager.get_debug_data()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

from ..common.connectivity_status import ConnectivityStatus
from ..common.consts import DEFAULT_NAME
from ..models.analytics_periods import AnalyticPeriodsData
from ..models.config_data import DATA_KEYS, ConfigData
from ..models.exceptions import LoginError
from .config_manager import ConfigManager
Expand Down Expand Up @@ -67,8 +66,7 @@ async def async_step(self, user_input: dict | None = None):
config_data = ConfigData()
config_data.update(user_input)

analytic_periods = AnalyticPeriodsData()
api = RestAPI(self._hass, config_data, analytic_periods)
api = RestAPI(self._hass, config_data)

await api.validate()

Expand Down
5 changes: 4 additions & 1 deletion custom_components/citymind_water_meter/managers/rest_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,13 @@ def __init__(
self,
hass: HomeAssistant | None,
config_data: ConfigData,
analytic_periods: AnalyticPeriodsData,
analytic_periods: AnalyticPeriodsData | None = None,
entry_id: str | None = None,
):
try:
if analytic_periods is None:
analytic_periods = AnalyticPeriodsData()

self._hass = hass
self._support_video_browser_api = False

Expand Down
2 changes: 1 addition & 1 deletion custom_components/citymind_water_meter/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@
"iot_class": "cloud_polling",
"issue_tracker": "https://github.com/maorcc/citymind_water_meter/issues",
"requirements": [],
"version": "3.0.4"
"version": "3.0.5"
}

0 comments on commit 0f3253c

Please sign in to comment.