Fix message editing

This commit is contained in:
2025-12-17 16:31:53 +03:00
Unverified
parent d942ca8dcb
commit 0645bc5e7f
2 changed files with 24 additions and 13 deletions
+20 -7
View File
@@ -710,15 +710,16 @@ async def get_dm_conversations(request: Request, current_user: User = Depends(ge
} }
@router.put("/edit_message/{message_id}") async def _edit_message_internal(
@rate_limit_per_ip("20/minute")
async def edit_message(
request: Request,
message_id: int, message_id: int,
edit_request: EditMessageRequest, edit_request: EditMessageRequest,
current_user: User = Depends(get_current_user), current_user: User,
db: Session = Depends(get_db) db: Session
): ) -> dict:
"""Internal function to edit a message without requiring a Request object.
This can be called from both HTTP endpoints and WebSocket handlers.
"""
message = db.query(Message).filter(Message.id == message_id).first() message = db.query(Message).filter(Message.id == message_id).first()
if not message: if not message:
@@ -767,6 +768,18 @@ async def edit_message(
return {"status": "success", "message": payload} return {"status": "success", "message": payload}
@router.put("/edit_message/{message_id}")
@rate_limit_per_ip("20/minute")
async def edit_message(
request: Request,
message_id: int,
edit_request: EditMessageRequest,
current_user: User = Depends(get_current_user),
db: Session = Depends(get_db)
):
return await _edit_message_internal(message_id, edit_request, current_user, db)
@router.delete("/delete_message/{message_id}") @router.delete("/delete_message/{message_id}")
async def delete_message( async def delete_message(
message_id: int, message_id: int,
+4 -6
View File
@@ -3,13 +3,14 @@ import json
import logging import logging
import time import time
from typing import Any from typing import Any
from fastapi import HTTPException, WebSocket from fastapi import HTTPException, WebSocket, Request
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from websocket.registry import WebSocketHandlerRegistry from websocket.registry import WebSocketHandlerRegistry
from routes.messaging import ( from routes.messaging import (
MessaggingSocketManager, MessaggingSocketManager,
_send_message_internal, _send_message_internal,
_edit_message_internal,
get_messages, get_messages,
edit_message, edit_message,
delete_message, delete_message,
@@ -211,14 +212,11 @@ async def dmSend(manager: MessaggingSocketManager, websocket: WebSocket, db: Ses
@websocket_handler("editMessage", authRequired=True) @websocket_handler("editMessage", authRequired=True)
async def editMessage(manager: MessaggingSocketManager, websocket: WebSocket, db: Session, user: User, data: dict) -> dict | None: async def editMessage(manager: MessaggingSocketManager, websocket: WebSocket, db: Session, user: User, data: dict) -> dict | None:
"""Edit a public chat message.""" """Edit a public chat message."""
from types import SimpleNamespace
message_id = data["message_id"] message_id = data["message_id"]
request: EditMessageRequest = EditMessageRequest.model_validate(data) edit_request: EditMessageRequest = EditMessageRequest.model_validate(data)
# Create a dummy request object for the HTTP endpoint function response = await _edit_message_internal(message_id, edit_request, user, db)
dummy_request = SimpleNamespace()
response = await edit_message(dummy_request, message_id, request, user, db)
await manager.broadcast({ await manager.broadcast({
"type": "messageEdited", "type": "messageEdited",
"data": response["message"] "data": response["message"]