From 38f76c7acf49cfdf952e8ae9f94beb9736ffb39a Mon Sep 17 00:00:00 2001
From: Tulir Asokan <tulir@maunium.net>
Date: Sun, 5 Apr 2020 16:16:23 +0300
Subject: [PATCH] Fix Matrix->Facebook images in encrypted rooms

---
 mautrix_facebook/portal.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/mautrix_facebook/portal.py b/mautrix_facebook/portal.py
index 2886bf5..b20b335 100644
--- a/mautrix_facebook/portal.py
+++ b/mautrix_facebook/portal.py
@@ -428,8 +428,15 @@ class Portal(BasePortal):
         return await sender.send(matrix_to_facebook(message, self.mxid), self.fbid, self.fb_type)
 
     async def _handle_matrix_image(self, sender: 'u.User',
-                                   message: MediaMessageEventContent) -> str:
-        data = await self.main_intent.download_media(message.url)
+                                   message: MediaMessageEventContent) -> Optional[str]:
+        if message.file and decrypt_attachment:
+            data = await self.main_intent.download_media(message.file.url)
+            data = decrypt_attachment(data, message.file.key.key,
+                                      message.file.hashes.get("sha256"), message.file.iv)
+        elif message.url:
+            data = await self.main_intent.download_media(message.url)
+        else:
+            return None
         mime = message.info.mimetype or magic.from_buffer(data, mime=True)
         files = await sender._upload([(message.body, data, mime)])
         return await sender._send_files(files, thread_id=self.fbid, thread_type=self.fb_type)
-- 
GitLab