mirror of
https://github.com/MarekWo/mc-webui.git
synced 2026-08-07 09:12:57 +02:00
fix(v2): Fix DM contact names showing as pubkey prefix
- DM handler: don't overwrite contact name with prefix when name unknown - Migration: upsert contact with sender name from v1 PRIV entries - Fixes conversations showing "4e45565e" instead of "demo mc-webui" Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -312,19 +312,20 @@ class DeviceManager:
|
||||
sender_key = data.get('public_key', data.get('pubkey_prefix', ''))
|
||||
|
||||
# Look up sender from contacts — resolve prefix to full public key
|
||||
sender_name = 'Unknown'
|
||||
sender_name = ''
|
||||
if sender_key and self.mc:
|
||||
contact = self.mc.get_contact_by_key_prefix(sender_key)
|
||||
if contact:
|
||||
sender_name = contact.get('name', sender_key[:8])
|
||||
sender_name = contact.get('name', '')
|
||||
# Use the full public key from contacts (not the short prefix)
|
||||
full_key = contact.get('public_key', '')
|
||||
if full_key:
|
||||
sender_key = full_key
|
||||
if sender_key:
|
||||
# Only upsert with name if we have a real name (not just a prefix)
|
||||
self.db.upsert_contact(
|
||||
public_key=sender_key,
|
||||
name=sender_name,
|
||||
name=sender_name, # empty string won't overwrite existing name
|
||||
source='message',
|
||||
)
|
||||
|
||||
@@ -340,13 +341,13 @@ class DeviceManager:
|
||||
raw_json=json.dumps(data, default=str),
|
||||
)
|
||||
|
||||
logger.info(f"DM #{dm_id} from {sender_name}")
|
||||
logger.info(f"DM #{dm_id} from {sender_name or sender_key[:12]}")
|
||||
|
||||
if self.socketio:
|
||||
self.socketio.emit('new_message', {
|
||||
'type': 'dm',
|
||||
'contact_pubkey': sender_key,
|
||||
'sender': sender_name,
|
||||
'sender': sender_name or sender_key[:12],
|
||||
'content': content,
|
||||
'timestamp': ts,
|
||||
'id': dm_id,
|
||||
|
||||
+10
-1
@@ -254,12 +254,21 @@ def _migrate_dm_incoming(db, entry: dict):
|
||||
return
|
||||
|
||||
pubkey_prefix = entry.get('pubkey_prefix', '')
|
||||
sender_name = entry.get('name', '')
|
||||
|
||||
# Use None if pubkey not in contacts table (FK constraint)
|
||||
# Resolve prefix to full key if contact exists
|
||||
contact_key = pubkey_prefix if pubkey_prefix else None
|
||||
if contact_key:
|
||||
contact_key = _resolve_pubkey(db, contact_key)
|
||||
|
||||
# Create/update contact with sender name from v1 data
|
||||
if contact_key and sender_name:
|
||||
db.upsert_contact(
|
||||
public_key=contact_key,
|
||||
name=sender_name,
|
||||
source='message',
|
||||
)
|
||||
|
||||
db.insert_direct_message(
|
||||
contact_pubkey=contact_key,
|
||||
direction='in',
|
||||
|
||||
Reference in New Issue
Block a user