mirror of
https://github.com/smittix/intercept.git
synced 2026-05-24 08:44:48 -07:00
Fix SSE event names for frontend compatibility
The SSE stream was sending events without proper event names.
Frontend uses addEventListener('device_update', ...) which only
works with named events. Now maps internal event types to proper
SSE event names:
- device -> device_update
- status/started -> scan_started
- status/stopped -> scan_stopped
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -503,10 +503,34 @@ def stream_events():
|
||||
"""
|
||||
scanner = get_bluetooth_scanner()
|
||||
|
||||
def map_event_type(event: dict) -> tuple[str, dict]:
|
||||
"""Map internal event types to SSE event names."""
|
||||
event_type = event.get('type', 'unknown')
|
||||
|
||||
if event_type == 'device':
|
||||
# Device update - send the device data
|
||||
return 'device_update', event.get('device', event)
|
||||
elif event_type == 'status':
|
||||
status = event.get('status', '')
|
||||
if status == 'started':
|
||||
return 'scan_started', event
|
||||
elif status == 'stopped':
|
||||
return 'scan_stopped', event
|
||||
return 'status', event
|
||||
elif event_type == 'error':
|
||||
return 'error', event
|
||||
elif event_type == 'baseline':
|
||||
return 'baseline', event
|
||||
elif event_type == 'ping':
|
||||
return 'ping', {}
|
||||
else:
|
||||
return event_type, event
|
||||
|
||||
def event_generator() -> Generator[str, None, None]:
|
||||
"""Generate SSE events from scanner."""
|
||||
for event in scanner.stream_events(timeout=1.0):
|
||||
yield format_sse(event)
|
||||
event_name, event_data = map_event_type(event)
|
||||
yield format_sse(event_data, event=event_name)
|
||||
|
||||
return Response(
|
||||
event_generator(),
|
||||
|
||||
Reference in New Issue
Block a user