feat(forwarding): extract and handle image, audio, and file attachment fields for LXMF messages in ReticulumMeshChat

This commit is contained in:
2026-01-01 17:37:38 -06:00
parent 4b58683cb8
commit 73c07bc76e

View File

@@ -6300,6 +6300,26 @@ class ReticulumMeshChat:
source_hash = lxmf_message.source_hash.hex()
destination_hash = lxmf_message.destination_hash.hex()
# extract fields for potential forwarding
lxmf_fields = lxmf_message.get_fields()
image_field = None
audio_field = None
file_attachments_field = None
if LXMF.FIELD_IMAGE in lxmf_fields:
val = lxmf_fields[LXMF.FIELD_IMAGE]
image_field = LxmfImageField(val[0], val[1])
if LXMF.FIELD_AUDIO in lxmf_fields:
val = lxmf_fields[LXMF.FIELD_AUDIO]
audio_field = LxmfAudioField(val[0], val[1])
if LXMF.FIELD_FILE_ATTACHMENTS in lxmf_fields:
attachments = []
for val in lxmf_fields[LXMF.FIELD_FILE_ATTACHMENTS]:
attachments.append(LxmfFileAttachment(val[0], val[1]))
file_attachments_field = LxmfFileAttachmentsField(attachments)
# check if this message is for an alias identity (REPLY PATH)
mapping = self.database.messages.get_forwarding_mapping(
alias_hash=destination_hash
@@ -6317,6 +6337,9 @@ class ReticulumMeshChat:
title=lxmf_message.title
if hasattr(lxmf_message, "title")
else "",
image_field=image_field,
audio_field=audio_field,
file_attachments_field=file_attachments_field,
),
)
return
@@ -6354,10 +6377,16 @@ class ReticulumMeshChat:
if hasattr(lxmf_message, "title")
else "",
sender_identity_hash=mapping["alias_hash"],
image_field=image_field,
audio_field=audio_field,
file_attachments_field=file_attachments_field,
),
)
except Exception as e:
print(f"Error in handle_forwarding: {e}")
import traceback
traceback.print_exc()
# handle delivery status update for an outbound lxmf message
def on_lxmf_sending_state_updated(self, lxmf_message):