feat(realtime): add voice/video recording activity events
Some checks are pending
CI / test (push) Has started running

This commit is contained in:
2026-03-08 19:53:48 +03:00
parent 1ef0cdf29d
commit ac82e25d16
8 changed files with 135 additions and 9 deletions

View File

@@ -75,7 +75,14 @@ async def _dispatch_event(db, user_id: int, event: IncomingRealtimeEvent) -> Non
payload = SendMessagePayload.model_validate(event.payload)
await realtime_gateway.handle_send_message(db, user_id, payload)
return
if event.event in {"typing_start", "typing_stop"}:
if event.event in {
"typing_start",
"typing_stop",
"recording_voice_start",
"recording_voice_stop",
"recording_video_start",
"recording_video_stop",
}:
payload = ChatEventPayload.model_validate(event.payload)
await realtime_gateway.handle_typing_event(db, user_id, payload, event.event)
return

View File

@@ -15,6 +15,10 @@ RealtimeEventName = Literal[
"message_deleted",
"typing_start",
"typing_stop",
"recording_voice_start",
"recording_voice_stop",
"recording_video_start",
"recording_video_stop",
"message_read",
"message_delivered",
"user_online",
@@ -45,7 +49,18 @@ class MessageStatusPayload(BaseModel):
class IncomingRealtimeEvent(BaseModel):
event: Literal["send_message", "typing_start", "typing_stop", "message_read", "message_delivered", "ping"]
event: Literal[
"send_message",
"typing_start",
"typing_stop",
"recording_voice_start",
"recording_voice_stop",
"recording_video_start",
"recording_video_stop",
"message_read",
"message_delivered",
"ping",
]
payload: dict[str, Any]