diff --git a/backend/models.py b/backend/models.py index 33b67cd..b8a1b62 100644 --- a/backend/models.py +++ b/backend/models.py @@ -82,6 +82,7 @@ class RegisterRequest(BaseModel): class SendMessageRequest(BaseModel): content: str + reply_to_id: int | None class EditMessageRequest(BaseModel): diff --git a/backend/routes/messaging.py b/backend/routes/messaging.py index 2868f59..7c07165 100644 --- a/backend/routes/messaging.py +++ b/backend/routes/messaging.py @@ -29,6 +29,12 @@ async def send_message( current_user: User = Depends(get_current_user), db: Session = Depends(get_db) ): + if request.reply_to_id: + # Check if the message being replied to exists + original_message = db.query(Message).filter(Message.id == request.reply_to_id).first() + if not original_message: + raise HTTPException(status_code=404, detail="Original message not found") + if not request.content.strip(): raise HTTPException( status_code=400, @@ -44,6 +50,7 @@ async def send_message( new_message = Message( content=request.content.strip(), user_id=current_user.id, + reply_to_id=request.reply_to_id, timestamp=datetime.now() ) @@ -191,35 +198,6 @@ async def delete_message( return {"status": "success", "message_id": message_id} - -@router.post("/reply_message") -async def reply_message( - request: ReplyMessageRequest, - current_user: User = Depends(get_current_user), - db: Session = Depends(get_db) -): - # Check if the message being replied to exists - original_message = db.query(Message).filter(Message.id == request.reply_to_id).first() - if not original_message: - raise HTTPException(status_code=404, detail="Original message not found") - - if not request.content.strip(): - raise HTTPException(status_code=400, detail="No content provided") - - new_message = Message( - content=request.content.strip(), - user_id=current_user.id, - timestamp=datetime.now(), - reply_to_id=request.reply_to_id - ) - - db.add(new_message) - db.commit() - db.refresh(new_message) - - return {"status": "success", "message": convert_message(new_message)} - - class MessaggingSocketManager: def __init__(self) -> None: self.connections: list[WebSocket] = [] @@ -356,22 +334,6 @@ class MessaggingSocketManager: "data": {"message_id": message_id} }) - await websocket.send_json({"type": type, "data": response}) - except HTTPException as e: - await self.send_error(websocket, type, e) - elif type == "replyMessage": - try: - current_user = get_current_user_inner() - if not current_user: - raise HTTPException(401) - - request: ReplyMessageRequest = ReplyMessageRequest.model_validate(data["data"]) - response = await reply_message(request, current_user, db) - await self.broadcast({ - "type": "newMessage", - "data": response["message"] - }) - await websocket.send_json({"type": type, "data": response}) except HTTPException as e: await self.send_error(websocket, type, e) diff --git a/frontend/src/ui/panels/PublicChatPanel.ts b/frontend/src/ui/panels/PublicChatPanel.ts index d32cf79..dd5f2f7 100644 --- a/frontend/src/ui/panels/PublicChatPanel.ts +++ b/frontend/src/ui/panels/PublicChatPanel.ts @@ -66,7 +66,10 @@ export class PublicChatPanel extends MessagePanel { try { const response = await request({ - data: { content: content.trim(), ...(replyToId ? { reply_to_id: replyToId } : {}) }, + data: { + content: content.trim(), + reply_to_id: replyToId ?? null + }, credentials: { scheme: "Bearer", credentials: this.currentUser.authToken