Attach contact name to DMs for blocking purposes

This commit is contained in:
Jack Kingsman
2026-03-06 14:28:41 -08:00
parent 8f2d55277f
commit d5a60d6ca3
2 changed files with 11 additions and 5 deletions

View File

@@ -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(),
)

View File

@@ -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,