Revert to using call_soon for event triggers and state changed event trackers (#122735)

This commit is contained in:
J. Nick Koston
2024-07-29 04:45:39 -05:00
committed by GitHub
parent 869ec3f670
commit 1879db9f8f
9 changed files with 233 additions and 6 deletions

View File

@@ -328,6 +328,16 @@ def async_track_state_change_event(
return _async_track_state_change_event(hass, entity_ids, action, job_type)
@callback
def _async_dispatch_entity_id_event_soon(
hass: HomeAssistant,
callbacks: dict[str, list[HassJob[[Event[_StateEventDataT]], Any]]],
event: Event[_StateEventDataT],
) -> None:
"""Dispatch to listeners soon to ensure one event loop runs before dispatch."""
hass.loop.call_soon(_async_dispatch_entity_id_event, hass, callbacks, event)
@callback
def _async_dispatch_entity_id_event(
hass: HomeAssistant,
@@ -361,7 +371,7 @@ def _async_state_filter(
_KEYED_TRACK_STATE_CHANGE = _KeyedEventTracker(
key=_TRACK_STATE_CHANGE_DATA,
event_type=EVENT_STATE_CHANGED,
dispatcher_callable=_async_dispatch_entity_id_event,
dispatcher_callable=_async_dispatch_entity_id_event_soon,
filter_callable=_async_state_filter,
)