From 73c07bc76edba55fa4c43108e46b241b8c6d65fc Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Thu, 1 Jan 2026 17:37:38 -0600 Subject: [PATCH] feat(forwarding): extract and handle image, audio, and file attachment fields for LXMF messages in ReticulumMeshChat --- meshchatx/meshchat.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/meshchatx/meshchat.py b/meshchatx/meshchat.py index 85f1f96..55b9017 100644 --- a/meshchatx/meshchat.py +++ b/meshchatx/meshchat.py @@ -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):