feat(realtime): sync message edits and deletes instantly

This commit is contained in:
2026-03-08 13:17:09 +03:00
parent eda84d4d82
commit 13b5f5b855
5 changed files with 70 additions and 1 deletions

View File

@@ -11,6 +11,8 @@ RealtimeEventName = Literal[
"disconnect",
"send_message",
"receive_message",
"message_updated",
"message_deleted",
"typing_start",
"typing_stop",
"message_read",

View File

@@ -208,6 +208,27 @@ class RealtimeGateway:
},
)
async def publish_message_updated(self, *, message) -> None:
message_data = MessageRead.model_validate(message).model_dump(mode="json")
await self._publish_chat_event(
message.chat_id,
event="message_updated",
payload={
"chat_id": message.chat_id,
"message": message_data,
},
)
async def publish_message_deleted(self, *, chat_id: int, message_id: int) -> None:
await self._publish_chat_event(
chat_id,
event="message_deleted",
payload={
"chat_id": chat_id,
"message_id": message_id,
},
)
async def _send_user_event(self, user_id: int, event: OutgoingRealtimeEvent) -> None:
user_connections = self._connections.get(user_id, {})
if not user_connections: