diff --git a/app/event_handlers.py b/app/event_handlers.py index c203a2a..acee3b5 100644 --- a/app/event_handlers.py +++ b/app/event_handlers.py @@ -106,6 +106,7 @@ async def on_contact_message(event: "Event") -> None: # If the packet processor already stored this message, this returns None ts = payload.get("sender_timestamp") sender_timestamp = ts if ts is not None else received_at + sender_name = contact.name if contact else None msg_id = await MessageRepository.create( msg_type="PRIV", text=payload.get("text", ""), @@ -116,6 +117,7 @@ async def on_contact_message(event: "Event") -> None: txt_type=txt_type, signature=payload.get("signature"), sender_key=sender_pubkey, + sender_name=sender_name, ) if msg_id is None: @@ -144,6 +146,8 @@ async def on_contact_message(event: "Event") -> None: paths=paths, txt_type=txt_type, signature=payload.get("signature"), + sender_key=sender_pubkey, + sender_name=sender_name, ).model_dump(), ) diff --git a/app/packet_processor.py b/app/packet_processor.py index 5b5a4c8..de1da24 100644 --- a/app/packet_processor.py +++ b/app/packet_processor.py @@ -275,6 +275,9 @@ async def create_dm_message_from_decrypted( # conversation_key is always the other party's public key conversation_key = their_public_key.lower() + # Resolve sender name for incoming messages (used for name-based blocking) + sender_name = contact.name if contact and not outgoing else None + # Try to create message - INSERT OR IGNORE handles duplicates atomically msg_id = await MessageRepository.create( msg_type="PRIV", @@ -285,6 +288,7 @@ async def create_dm_message_from_decrypted( path=path, outgoing=outgoing, sender_key=conversation_key if not outgoing else None, + sender_name=sender_name, ) if msg_id is None: @@ -325,6 +329,8 @@ async def create_dm_message_from_decrypted( received_at=received, paths=paths, outgoing=outgoing, + sender_name=sender_name, + sender_key=conversation_key if not outgoing else None, ).model_dump(), ) @@ -335,13 +341,9 @@ async def create_dm_message_from_decrypted( if trigger_bot: from app.bot import run_bot_for_message - # Get contact name for the bot - contact = await ContactRepository.get_by_key(their_public_key) - sender_name = contact.name if contact else None - asyncio.create_task( run_bot_for_message( - sender_name=sender_name, + sender_name=contact.name if contact else None, sender_key=their_public_key, message_text=decrypted.message, is_dm=True,