From 3cf14f8758345c7fb4118edd629485ae1ebb74e2 Mon Sep 17 00:00:00 2001 From: pe1hvh Date: Thu, 12 Mar 2026 17:50:44 +0100 Subject: [PATCH] HotFix --- meshcore_gui/ble/events.py | 39 +++++++++++++++++++------------------- meshcore_gui/ble/worker.py | 9 +++++++-- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/meshcore_gui/ble/events.py b/meshcore_gui/ble/events.py index cf1150f..7105179 100644 --- a/meshcore_gui/ble/events.py +++ b/meshcore_gui/ble/events.py @@ -302,6 +302,13 @@ class EventHandler: pubkey = payload.get('pubkey_prefix', '') txt_type = payload.get('txt_type', 0) signature = payload.get('signature', '') + room_pubkey = ( + payload.get('room_pubkey') + or payload.get('receiver') + or payload.get('receiver_pubkey') + or payload.get('receiver_pubkey_prefix') + or pubkey + ) debug_print(f"DM payload keys: {list(payload.keys())}") @@ -320,27 +327,21 @@ class EventHandler: # --- Room Server message (txt_type 2) --- if txt_type == 2: - room_pubkey = ( - payload.get('room_pubkey') - or payload.get('receiver_pubkey') - or payload.get('recipient_pubkey') - or payload.get('pubkey') - or pubkey - ) - author_prefix = ( - signature - or payload.get('sender_pubkey_prefix', '') - or payload.get('sender_pubkey', '') - or payload.get('sender_prefix', '') - ) - + # Resolve actual author from signature when present. + # Some room servers omit the signature field; in that case + # fall back to the payload sender/display name if available. author = '' - if author_prefix: - author = self._shared.get_contact_name_by_prefix(author_prefix) + if signature: + author = self._shared.get_contact_name_by_prefix(signature) + if not author: + author = signature[:8] if not author: - author = payload.get('sender_name', '') or payload.get('name', '') - if not author: - author = author_prefix[:8] if author_prefix else room_pubkey[:8] if room_pubkey else '?' + author = ( + payload.get('sender') + or payload.get('name') + or payload.get('author') + or '?' + ) self._shared.add_message(Message.incoming( author, diff --git a/meshcore_gui/ble/worker.py b/meshcore_gui/ble/worker.py index af9965b..449db10 100644 --- a/meshcore_gui/ble/worker.py +++ b/meshcore_gui/ble/worker.py @@ -259,13 +259,18 @@ class _BaseWorker(abc.ABC): def _on_login_success(self, event) -> None: payload = event.payload or {} - pubkey = payload.get("pubkey_prefix", "") + pubkey = ( + payload.get("room_pubkey") + or payload.get("pubkey_prefix") + or payload.get("receiver") + or "" + ) is_admin = payload.get("is_admin", False) debug_print(f"LOGIN_SUCCESS received: pubkey={pubkey}, admin={is_admin}") + self.shared.set_status("✅ Room login OK — messages arriving over RF…") if pubkey: self.shared.set_room_login_state(pubkey, 'ok', f'admin={is_admin}') self.shared.load_room_history(pubkey) - self.shared.set_status("✅ Room login OK — messages arriving over RF…") # ── apply cache ───────────────────────────────────────────────