diff --git a/app/device_manager.py b/app/device_manager.py index 060965c..9d8f767 100644 --- a/app/device_manager.py +++ b/app/device_manager.py @@ -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, diff --git a/app/migrate_v1.py b/app/migrate_v1.py index 14d09ed..e50c2e8 100644 --- a/app/migrate_v1.py +++ b/app/migrate_v1.py @@ -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',