Small cleanup to unifiprotect subscriptions (#113901)

This commit is contained in:
J. Nick Koston 2024-03-20 10:09:42 -10:00 committed by GitHub
parent 426f73b1f4
commit cf8455336c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -4,6 +4,7 @@ from __future__ import annotations
from collections.abc import Callable, Generator, Iterable from collections.abc import Callable, Generator, Iterable
from datetime import datetime, timedelta from datetime import datetime, timedelta
from functools import partial
import logging import logging
from typing import Any, cast from typing import Any, cast
@ -280,11 +281,7 @@ class ProtectData:
self._hass, self._async_poll, self._update_interval self._hass, self._async_poll, self._update_interval
) )
self._subscriptions.setdefault(mac, []).append(update_callback) self._subscriptions.setdefault(mac, []).append(update_callback)
return partial(self.async_unsubscribe_device_id, mac, update_callback)
def _unsubscribe() -> None:
self.async_unsubscribe_device_id(mac, update_callback)
return _unsubscribe
@callback @callback
def async_unsubscribe_device_id( def async_unsubscribe_device_id(
@ -301,12 +298,10 @@ class ProtectData:
@callback @callback
def _async_signal_device_update(self, device: ProtectDeviceType) -> None: def _async_signal_device_update(self, device: ProtectDeviceType) -> None:
"""Call the callbacks for a device_id.""" """Call the callbacks for a device_id."""
if not (subscriptions := self._subscriptions.get(device.mac)):
if not self._subscriptions.get(device.mac):
return return
_LOGGER.debug("Updating device: %s (%s)", device.name, device.mac) _LOGGER.debug("Updating device: %s (%s)", device.name, device.mac)
for update_callback in self._subscriptions[device.mac]: for update_callback in subscriptions:
update_callback(device) update_callback(device)