mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-22 19:15:08 +03:00
Fix message editing
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
Reference in New Issue
Block a user