Skip to content

Commit 0571243

Browse files
🐛 Send conversation message notifications to users (#7964)
1 parent dd8161e commit 0571243

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

services/web/server/src/simcore_service_webserver/conversations/_conversation_message_service.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ async def update_message(
111111
async def delete_message(
112112
app: web.Application,
113113
*,
114+
user_id: UserID,
114115
project_id: ProjectID,
115116
conversation_id: ConversationID,
116117
message_id: ConversationMessageID,
@@ -121,9 +122,12 @@ async def delete_message(
121122
message_id=message_id,
122123
)
123124

125+
_user_group_id = await get_user_primary_group_id(app, user_id=user_id)
126+
124127
await notify_conversation_message_deleted(
125128
app,
126129
recipients=await _get_recipients(app, project_id),
130+
user_group_id=_user_group_id,
127131
project_id=project_id,
128132
conversation_id=conversation_id,
129133
message_id=message_id,

services/web/server/src/simcore_service_webserver/conversations/_socketio.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@
66
ConversationID,
77
ConversationMessageGetDB,
88
ConversationMessageID,
9+
ConversationMessageType,
910
)
11+
from models_library.groups import GroupID
1012
from models_library.projects import ProjectID
1113
from models_library.socketio import SocketMessageDict
1214
from models_library.users import UserID
1315
from pydantic import AliasGenerator, BaseModel, ConfigDict
1416
from pydantic.alias_generators import to_camel
1517
from 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

@@ -32,6 +34,8 @@
3234
class 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
)

services/web/server/src/simcore_service_webserver/projects/_conversations_service.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ async def delete_project_conversation_message(
247247
)
248248
await conversations_service.delete_message(
249249
app,
250+
user_id=user_id,
250251
project_id=project_uuid,
251252
conversation_id=conversation_id,
252253
message_id=message_id,

0 commit comments

Comments
 (0)