Add entity CRUD events over WebSocket with auto-refresh
Broadcast entity_changed and device_health_changed events via the event bus so the frontend can auto-refresh cards without polling. Adds exponential backoff on WS reconnect. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,7 @@ from fastapi import APIRouter, Depends, HTTPException
|
||||
|
||||
from wled_controller.api.auth import AuthRequired
|
||||
from wled_controller.api.dependencies import (
|
||||
fire_entity_event,
|
||||
get_output_target_store,
|
||||
get_processor_manager,
|
||||
get_scene_preset_store,
|
||||
@@ -87,6 +88,7 @@ async def create_scene_preset(
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
fire_entity_event("scene_preset", "created", preset.id)
|
||||
return _preset_to_response(preset)
|
||||
|
||||
|
||||
@@ -175,6 +177,7 @@ async def update_scene_preset(
|
||||
)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=404 if "not found" in str(e).lower() else 400, detail=str(e))
|
||||
fire_entity_event("scene_preset", "updated", preset_id)
|
||||
return _preset_to_response(preset)
|
||||
|
||||
|
||||
@@ -194,6 +197,7 @@ async def delete_scene_preset(
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=404, detail=str(e))
|
||||
|
||||
fire_entity_event("scene_preset", "deleted", preset_id)
|
||||
|
||||
|
||||
# ===== Recapture =====
|
||||
@@ -259,4 +263,5 @@ async def activate_scene_preset(
|
||||
if not errors:
|
||||
logger.info(f"Scene preset '{preset.name}' activated successfully")
|
||||
|
||||
fire_entity_event("scene_preset", "updated", preset_id)
|
||||
return ActivateResponse(status=status, errors=errors)
|
||||
|
||||
Reference in New Issue
Block a user