From 8774f6c036af0e6f837456c822c0cfad6146e776 Mon Sep 17 00:00:00 2001 From: pe1hvh Date: Thu, 12 Mar 2026 20:24:48 +0100 Subject: [PATCH] Update shared_data.py --- meshcore_gui/core/shared_data.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/meshcore_gui/core/shared_data.py b/meshcore_gui/core/shared_data.py index 7e3d1ca..1e17dae 100644 --- a/meshcore_gui/core/shared_data.py +++ b/meshcore_gui/core/shared_data.py @@ -593,11 +593,25 @@ class SharedData: return None def get_contact_name_by_prefix(self, pubkey_prefix: str) -> str: + """Resolve a pubkey/prefix to a display name. + + Accepts either a short prefix or a longer/full public key and + returns the best-known human-readable name. This keeps room + messages readable when the room server reports the author as a + full hash instead of the shorter contact key used elsewhere. + """ if not pubkey_prefix: return "" + + probe = pubkey_prefix.lower() with self.lock: + device_key = (self.device.public_key or '').lower() + if device_key and (device_key.startswith(probe) or probe.startswith(device_key)): + return self.device.name or 'Me' + for key, contact in self.contacts.items(): - if key.lower().startswith(pubkey_prefix.lower()): + key_lower = key.lower() + if key_lower.startswith(probe) or probe.startswith(key_lower): name = contact.get('adv_name', '') if name: return name