mirror of
https://github.com/smittix/intercept.git
synced 2026-05-25 09:14:49 -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()
|
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]:
|
def event_generator() -> Generator[str, None, None]:
|
||||||
"""Generate SSE events from scanner."""
|
"""Generate SSE events from scanner."""
|
||||||
for event in scanner.stream_events(timeout=1.0):
|
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(
|
return Response(
|
||||||
event_generator(),
|
event_generator(),
|
||||||
|
|||||||
Reference in New Issue
Block a user