[#304] Rewrite Picovoice integrations #385

Merged
blacklight merged 36 commits from 304-new-picovoice-integration into master 2024-05-02 02:50:51 +02:00
1 changed files with 17 additions and 3 deletions
Showing only changes of commit 862d56a338 - Show all commits

View File

@ -1,4 +1,5 @@
import sys
from typing import Callable, List, Union
from ..hook import EventHook
@ -20,10 +21,23 @@ class EventProcessor:
if hooks is None:
hooks = Config.get_event_hooks()
self.hooks = []
self._hooks_by_name = {}
self._hooks_by_value_id = {}
for name, hook in hooks.items():
h = EventHook.build(name=name, hook=hook)
self.hooks.append(h)
self.add_hook(name, hook)
@property
def hooks(self) -> List[EventHook]:
return list(self._hooks_by_name.values())
def add_hook(self, name: str, desc: Union[dict, Callable]):
hook_id = id(desc)
if hook_id in self._hooks_by_value_id:
return # Don't add the same hook twice
hook = EventHook.build(name=name, hook=desc)
self._hooks_by_name[name] = hook
self._hooks_by_value_id[hook_id] = hook
@staticmethod
def notify_web_clients(event):