feat(reactions): add message reactions API and web quick reactions

This commit is contained in:
2026-03-08 09:51:18 +03:00
parent 6adb8c24d7
commit 76f008d635
10 changed files with 256 additions and 8 deletions

View File

@@ -3,14 +3,24 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.auth.service import get_current_user
from app.database.session import get_db
from app.messages.schemas import MessageCreateRequest, MessageForwardRequest, MessageRead, MessageStatusUpdateRequest, MessageUpdateRequest
from app.messages.schemas import (
MessageCreateRequest,
MessageForwardRequest,
MessageReactionRead,
MessageReactionToggleRequest,
MessageRead,
MessageStatusUpdateRequest,
MessageUpdateRequest,
)
from app.messages.service import (
create_chat_message,
delete_message,
delete_message_for_all,
forward_message,
get_messages,
list_message_reactions,
search_messages,
toggle_message_reaction,
update_message,
)
from app.realtime.schemas import MessageStatusPayload
@@ -104,3 +114,22 @@ async def forward_message_endpoint(
message = await forward_message(db, source_message_id=message_id, sender_id=current_user.id, payload=payload)
await realtime_gateway.publish_message_created(message=message, sender_id=current_user.id)
return message
@router.get("/{message_id}/reactions", response_model=list[MessageReactionRead])
async def list_reactions_endpoint(
message_id: int,
db: AsyncSession = Depends(get_db),
current_user: User = Depends(get_current_user),
) -> list[MessageReactionRead]:
return await list_message_reactions(db, message_id=message_id, user_id=current_user.id)
@router.post("/{message_id}/reactions/toggle", response_model=list[MessageReactionRead])
async def toggle_reaction_endpoint(
message_id: int,
payload: MessageReactionToggleRequest,
db: AsyncSession = Depends(get_db),
current_user: User = Depends(get_current_user),
) -> list[MessageReactionRead]:
return await toggle_message_reaction(db, message_id=message_id, user_id=current_user.id, payload=payload)