diff --git a/ai-hub/app/api/routes/nodes.py b/ai-hub/app/api/routes/nodes.py index ed97a81..e649e60 100644 --- a/ai-hub/app/api/routes/nodes.py +++ b/ai-hub/app/api/routes/nodes.py @@ -291,15 +291,13 @@ return {"message": "Node preferences saved.", "nodes": prefs.model_dump()} @router.get("/preferences", response_model=schemas.UserNodePreferences, summary="Get User Node Preferences") - def get_node_preferences(user_id: str, db: Session = Depends(get_db)): - user = db.query(models.User).filter(models.User.id == user_id).first() - if not user: - raise HTTPException(status_code=404, detail="User not found.") - node_prefs = (user.preferences or {}).get("nodes", {}) + def get_node_preferences( + db: Session = Depends(get_db), + current_user: models.User = Depends(get_current_user) + ): + node_prefs = (current_user.preferences or {}).get("nodes", {}) return schemas.UserNodePreferences(**node_prefs) if node_prefs else schemas.UserNodePreferences() - - @router.get("/admin/{node_id}/config.yaml", response_model=schemas.NodeConfigYamlResponse, summary="[Admin] Download Node Config YAML") def download_node_config_yaml(node_id: str, admin_id: str = Query(...), db: Session = Depends(get_db)): _require_admin(admin_id, db) @@ -938,9 +936,6 @@ return router - return router - - async def _drain(q: queue.Queue, websocket: WebSocket): """Drain all pending queue items and send to websocket (non-blocking).""" while True: diff --git a/frontend/src/services/api/apiClient.js b/frontend/src/services/api/apiClient.js index aa7f7a6..fe33ba3 100644 --- a/frontend/src/services/api/apiClient.js +++ b/frontend/src/services/api/apiClient.js @@ -48,7 +48,11 @@ let detail = `API error (${response.status})`; try { const errBody = await response.json(); - detail = errBody.detail || detail; + if (errBody.detail) { + detail = typeof errBody.detail === 'string' + ? errBody.detail + : JSON.stringify(errBody.detail); + } } catch { } throw new Error(detail); }