feat(meshchat): enhance LXMF announce handling by checking for existing announces and recalling identity for hash calculation

This commit is contained in:
2026-01-01 22:45:33 -06:00
parent 802a1a6217
commit 3e09d7bc44

View File

@@ -6980,6 +6980,7 @@ class ReticulumMeshChat:
# Try to find associated LXMF destination hash if this is a telephony announce
lxmf_destination_hash = None
if announce["aspect"] == "lxst.telephony" and announce.get("identity_hash"):
# 1. Check if we already have an LXMF announce for this identity
lxmf_announces = self.database.announces.get_filtered_announces(
aspect="lxmf.delivery",
search_term=announce["identity_hash"],
@@ -6993,6 +6994,20 @@ class ReticulumMeshChat:
display_name = self.parse_lxmf_display_name(lxmf_a["app_data"])
break
# 2. If not found in announces, try to recall identity and calculate LXMF hash
if not lxmf_destination_hash:
try:
identity_hash_bytes = bytes.fromhex(announce["identity_hash"])
identity = RNS.Identity.recall(identity_hash_bytes)
if identity:
lxmf_destination_hash = RNS.Destination.hash(
identity,
"lxmf",
"delivery",
).hex()
except Exception:
pass
# find lxmf user icon from database
lxmf_user_icon = None
user_icon_target_hash = lxmf_destination_hash or announce["destination_hash"]