diff --git a/frigate/app.py b/frigate/app.py index f67bfcd1f..7f51fac1b 100644 --- a/frigate/app.py +++ b/frigate/app.py @@ -308,7 +308,7 @@ class FrigateApp: if c.enabled and c.notifications.enabled_in_config ] - if self.config.notifications.enabled_in_config or notification_cameras: + if notification_cameras: comms.append(WebPushClient(self.config)) comms.append(WebSocketClient(self.config)) diff --git a/frigate/comms/webpush.py b/frigate/comms/webpush.py index 1d6b94ebc..623e41f1d 100644 --- a/frigate/comms/webpush.py +++ b/frigate/comms/webpush.py @@ -27,7 +27,10 @@ class WebPushClient(Communicator): # type: ignore[misc] self.refresh: int = 0 self.web_pushers: dict[str, list[WebPusher]] = {} self.expired_subs: dict[str, list[str]] = {} - self.suspended_cameras: dict[str, datetime.datetime] = {} + self.suspended_cameras: dict[str, datetime.datetime] = { + c.name: datetime.datetime.fromtimestamp(0) + for c in self.config.cameras.values() + } if not self.config.notifications.email: logger.warning("Email must be provided for push notifications to be sent.") @@ -112,16 +115,11 @@ class WebPushClient(Communicator): # type: ignore[misc] def unsuspend_notifications(self, camera: str) -> None: """Unsuspend notifications for a specific camera.""" - del self.suspended_cameras[camera] + self.suspended_cameras[camera] = datetime.datetime.fromtimestamp(0) logger.info(f"Notifications for {camera} unsuspended") def is_camera_suspended(self, camera: str) -> bool: - if camera in self.suspended_cameras: - if datetime.datetime.now() >= self.suspended_cameras[camera]: - del self.suspended_cameras[camera] - return False - return True - return False + return datetime.datetime.now() <= self.suspended_cameras[camera] def publish(self, topic: str, payload: Any, retain: bool = False) -> None: """Wrapper for publishing when client is in valid state."""