fix(realtime,ui): sync message deletes and channel delete/leave behavior
All checks were successful
CI / test (push) Successful in 23s
All checks were successful
CI / test (push) Successful in 23s
This commit is contained in:
@@ -13,6 +13,7 @@ from app.messages.schemas import (
|
||||
MessageStatusUpdateRequest,
|
||||
MessageUpdateRequest,
|
||||
)
|
||||
from app.messages.repository import get_message_by_id
|
||||
from app.messages.service import (
|
||||
create_chat_message,
|
||||
delete_message,
|
||||
@@ -87,7 +88,10 @@ async def remove_message(
|
||||
current_user: User = Depends(get_current_user),
|
||||
) -> None:
|
||||
if for_all:
|
||||
message = await get_message_by_id(db, message_id)
|
||||
await delete_message_for_all(db, message_id=message_id, user_id=current_user.id)
|
||||
if message:
|
||||
await realtime_gateway.publish_chat_updated(chat_id=message.chat_id)
|
||||
return
|
||||
await delete_message(db, message_id=message_id, user_id=current_user.id)
|
||||
|
||||
|
||||
@@ -206,6 +206,11 @@ async def delete_message(db: AsyncSession, *, message_id: int, user_id: int) ->
|
||||
membership = await chats_repository.get_chat_member(db, chat_id=message.chat_id, user_id=user_id)
|
||||
if not membership:
|
||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="You are not a member of this chat")
|
||||
if chat.type == ChatType.CHANNEL and not chat.is_saved:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||
detail="Channel messages can only be deleted for everyone",
|
||||
)
|
||||
# Telegram-like default: delete only for current user.
|
||||
hidden = await repository.get_hidden_message(db, message_id=message.id, user_id=user_id)
|
||||
if not hidden:
|
||||
|
||||
Reference in New Issue
Block a user