66 ConversationID ,
77 ConversationMessageGetDB ,
88 ConversationMessageID ,
9+ ConversationMessageType ,
910)
11+ from models_library .groups import GroupID
1012from models_library .projects import ProjectID
1113from models_library .socketio import SocketMessageDict
1214from models_library .users import UserID
1315from pydantic import AliasGenerator , BaseModel , ConfigDict
1416from pydantic .alias_generators import to_camel
1517from servicelib .utils import limited_as_completed
1618
17- from ..socketio .messages import send_message_to_standard_group
19+ from ..socketio .messages import send_message_to_user
1820
1921_MAX_CONCURRENT_SENDS : Final [int ] = 3
2022
3234class BaseConversationMessage (BaseModel ):
3335 conversation_id : ConversationID
3436 message_id : ConversationMessageID
37+ user_group_id : GroupID
38+ type : ConversationMessageType
3539
3640 model_config = ConfigDict (
3741 populate_by_name = True ,
@@ -42,13 +46,9 @@ class BaseConversationMessage(BaseModel):
4246 )
4347
4448
45- class ConversationMessageCreated (BaseConversationMessage ):
49+ class ConversationMessageCreatedOrUpdated (BaseConversationMessage ):
4650 content : str
4751 created : datetime .datetime
48-
49-
50- class ConversationMessageUpdated (BaseConversationMessage ):
51- content : str
5252 modified : datetime .datetime
5353
5454
@@ -62,7 +62,9 @@ async def _send_message_to_recipients(
6262):
6363 async for _ in limited_as_completed (
6464 (
65- send_message_to_standard_group (app , recipient , notification_message )
65+ send_message_to_user (
66+ app , recipient , notification_message , ignore_queue = True
67+ )
6668 for recipient in recipients
6769 ),
6870 limit = _MAX_CONCURRENT_SENDS ,
@@ -81,7 +83,7 @@ async def notify_conversation_message_created(
8183 event_type = SOCKET_IO_CONVERSATION_MESSAGE_CREATED_EVENT ,
8284 data = {
8385 "projectId" : project_id ,
84- ** ConversationMessageCreated (
86+ ** ConversationMessageCreatedOrUpdated (
8587 ** conversation_message .model_dump ()
8688 ).model_dump (mode = "json" , by_alias = True ),
8789 },
@@ -102,7 +104,7 @@ async def notify_conversation_message_updated(
102104 event_type = SOCKET_IO_CONVERSATION_MESSAGE_UPDATED_EVENT ,
103105 data = {
104106 "projectId" : project_id ,
105- ** ConversationMessageUpdated (
107+ ** ConversationMessageCreatedOrUpdated (
106108 ** conversation_message .model_dump ()
107109 ).model_dump (mode = "json" , by_alias = True ),
108110 },
@@ -115,6 +117,7 @@ async def notify_conversation_message_deleted(
115117 app : web .Application ,
116118 * ,
117119 recipients : set [UserID ],
120+ user_group_id : GroupID ,
118121 project_id : ProjectID ,
119122 conversation_id : ConversationID ,
120123 message_id : ConversationMessageID ,
@@ -125,7 +128,10 @@ async def notify_conversation_message_deleted(
125128 data = {
126129 "projectId" : project_id ,
127130 ** ConversationMessageDeleted (
128- conversation_id = conversation_id , message_id = message_id
131+ conversation_id = conversation_id ,
132+ message_id = message_id ,
133+ user_group_id = user_group_id ,
134+ type = ConversationMessageType .MESSAGE ,
129135 ).model_dump (mode = "json" , by_alias = True ),
130136 },
131137 )
0 commit comments