diff --git a/app/models.py b/app/models.py index ccf615d..2fb62a8 100644 --- a/app/models.py +++ b/app/models.py @@ -196,6 +196,7 @@ class Message(BaseModel): outgoing: bool = False acked: int = 0 sender_name: str | None = None + channel_name: str | None = None class MessagesAroundResponse(BaseModel): diff --git a/app/packet_processor.py b/app/packet_processor.py index cbe49d1..5595ea7 100644 --- a/app/packet_processor.py +++ b/app/packet_processor.py @@ -208,6 +208,7 @@ async def create_message_from_decrypted( paths=paths, sender_name=sender, sender_key=resolved_sender_key, + channel_name=channel_name, ).model_dump(), realtime=trigger_bot, ) @@ -301,6 +302,7 @@ async def create_dm_message_from_decrypted( paths = [MessagePath(path=path or "", received_at=received)] if path is not None else None # Broadcast new message to connected clients (and fanout modules when realtime) + sender_name = contact.name if contact and not outgoing else None broadcast_event( "message", Message( diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 06c1c47..8498ec3 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -172,6 +172,7 @@ export interface Message { /** ACK count: 0 = not acked, 1+ = number of acks/flood echoes received */ acked: number; sender_name: string | null; + channel_name?: string | null; } export interface MessagesAroundResponse { diff --git a/tests/test_event_handlers.py b/tests/test_event_handlers.py index 3d5e88a..a62212a 100644 --- a/tests/test_event_handlers.py +++ b/tests/test_event_handlers.py @@ -290,6 +290,7 @@ class TestContactMessageCLIFiltering: "outgoing", "acked", "sender_name", + "channel_name", } with patch("app.event_handlers.broadcast_event") as mock_broadcast: