Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ async def update_message(
async def delete_message(
app: web.Application,
*,
user_id: UserID,
project_id: ProjectID,
conversation_id: ConversationID,
message_id: ConversationMessageID,
Expand All @@ -121,9 +122,12 @@ async def delete_message(
message_id=message_id,
)

_user_group_id = await get_user_primary_group_id(app, user_id=user_id)

await notify_conversation_message_deleted(
app,
recipients=await _get_recipients(app, project_id),
user_group_id=_user_group_id,
project_id=project_id,
conversation_id=conversation_id,
message_id=message_id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@
ConversationID,
ConversationMessageGetDB,
ConversationMessageID,
ConversationMessageType,
)
from models_library.groups import GroupID
from models_library.projects import ProjectID
from models_library.socketio import SocketMessageDict
from models_library.users import UserID
from pydantic import AliasGenerator, BaseModel, ConfigDict
from pydantic.alias_generators import to_camel
from servicelib.utils import limited_as_completed

from ..socketio.messages import send_message_to_standard_group
from ..socketio.messages import send_message_to_user

_MAX_CONCURRENT_SENDS: Final[int] = 3

Expand All @@ -32,6 +34,8 @@
class BaseConversationMessage(BaseModel):
conversation_id: ConversationID
message_id: ConversationMessageID
user_group_id: GroupID
type: ConversationMessageType

model_config = ConfigDict(
populate_by_name=True,
Expand All @@ -42,13 +46,9 @@ class BaseConversationMessage(BaseModel):
)


class ConversationMessageCreated(BaseConversationMessage):
class ConversationMessageCreatedOrUpdated(BaseConversationMessage):
content: str
created: datetime.datetime


class ConversationMessageUpdated(BaseConversationMessage):
content: str
modified: datetime.datetime


Expand All @@ -62,7 +62,9 @@ async def _send_message_to_recipients(
):
async for _ in limited_as_completed(
(
send_message_to_standard_group(app, recipient, notification_message)
send_message_to_user(
app, recipient, notification_message, ignore_queue=True
)
for recipient in recipients
),
limit=_MAX_CONCURRENT_SENDS,
Expand All @@ -81,7 +83,7 @@ async def notify_conversation_message_created(
event_type=SOCKET_IO_CONVERSATION_MESSAGE_CREATED_EVENT,
data={
"projectId": project_id,
**ConversationMessageCreated(
**ConversationMessageCreatedOrUpdated(
**conversation_message.model_dump()
).model_dump(mode="json", by_alias=True),
},
Expand All @@ -102,7 +104,7 @@ async def notify_conversation_message_updated(
event_type=SOCKET_IO_CONVERSATION_MESSAGE_UPDATED_EVENT,
data={
"projectId": project_id,
**ConversationMessageUpdated(
**ConversationMessageCreatedOrUpdated(
**conversation_message.model_dump()
).model_dump(mode="json", by_alias=True),
},
Expand All @@ -115,6 +117,7 @@ async def notify_conversation_message_deleted(
app: web.Application,
*,
recipients: set[UserID],
user_group_id: GroupID,
project_id: ProjectID,
conversation_id: ConversationID,
message_id: ConversationMessageID,
Expand All @@ -125,7 +128,10 @@ async def notify_conversation_message_deleted(
data={
"projectId": project_id,
**ConversationMessageDeleted(
conversation_id=conversation_id, message_id=message_id
conversation_id=conversation_id,
message_id=message_id,
user_group_id=user_group_id,
type=ConversationMessageType.MESSAGE,
).model_dump(mode="json", by_alias=True),
},
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ async def delete_project_conversation_message(
)
await conversations_service.delete_message(
app,
user_id=user_id,
project_id=project_uuid,
conversation_id=conversation_id,
message_id=message_id,
Expand Down
Loading