mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-22 19:15:08 +03:00
Implement actual reply
This commit is contained in:
@@ -82,6 +82,7 @@ class RegisterRequest(BaseModel):
|
|||||||
|
|
||||||
class SendMessageRequest(BaseModel):
|
class SendMessageRequest(BaseModel):
|
||||||
content: str
|
content: str
|
||||||
|
reply_to_id: int | None
|
||||||
|
|
||||||
|
|
||||||
class EditMessageRequest(BaseModel):
|
class EditMessageRequest(BaseModel):
|
||||||
|
|||||||
@@ -29,6 +29,12 @@ async def send_message(
|
|||||||
current_user: User = Depends(get_current_user),
|
current_user: User = Depends(get_current_user),
|
||||||
db: Session = Depends(get_db)
|
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():
|
if not request.content.strip():
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=400,
|
status_code=400,
|
||||||
@@ -44,6 +50,7 @@ async def send_message(
|
|||||||
new_message = Message(
|
new_message = Message(
|
||||||
content=request.content.strip(),
|
content=request.content.strip(),
|
||||||
user_id=current_user.id,
|
user_id=current_user.id,
|
||||||
|
reply_to_id=request.reply_to_id,
|
||||||
timestamp=datetime.now()
|
timestamp=datetime.now()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -191,35 +198,6 @@ async def delete_message(
|
|||||||
|
|
||||||
return {"status": "success", "message_id": message_id}
|
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:
|
class MessaggingSocketManager:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.connections: list[WebSocket] = []
|
self.connections: list[WebSocket] = []
|
||||||
@@ -356,22 +334,6 @@ class MessaggingSocketManager:
|
|||||||
"data": {"message_id": message_id}
|
"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})
|
await websocket.send_json({"type": type, "data": response})
|
||||||
except HTTPException as e:
|
except HTTPException as e:
|
||||||
await self.send_error(websocket, type, e)
|
await self.send_error(websocket, type, e)
|
||||||
|
|||||||
@@ -66,7 +66,10 @@ export class PublicChatPanel extends MessagePanel {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await request({
|
const response = await request({
|
||||||
data: { content: content.trim(), ...(replyToId ? { reply_to_id: replyToId } : {}) },
|
data: {
|
||||||
|
content: content.trim(),
|
||||||
|
reply_to_id: replyToId ?? null
|
||||||
|
},
|
||||||
credentials: {
|
credentials: {
|
||||||
scheme: "Bearer",
|
scheme: "Bearer",
|
||||||
credentials: this.currentUser.authToken
|
credentials: this.currentUser.authToken
|
||||||
|
|||||||
Reference in New Issue
Block a user