From 695ad671bd78acc146f0dc86a63f79e0d0382d23 Mon Sep 17 00:00:00 2001
From: Tulir Asokan <tulir@maunium.net>
Date: Fri, 5 Jun 2020 14:10:13 +0300
Subject: [PATCH] Maybe fix notices going out in the wrong order

---
 mautrix_facebook/user.py | 6 +++++-
 requirements.txt         | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/mautrix_facebook/user.py b/mautrix_facebook/user.py
index e0c6a8b..f50a6f7 100644
--- a/mautrix_facebook/user.py
+++ b/mautrix_facebook/user.py
@@ -48,6 +48,7 @@ class User(BaseUser):
 
     notice_room: RoomID
     _notice_room_lock: asyncio.Lock
+    _notice_send_lock: asyncio.Lock
     is_admin: bool
     permission_level: str
     _is_logged_in: Optional[bool]
@@ -69,6 +70,7 @@ class User(BaseUser):
         self.mxid = mxid
         self.notice_room = notice_room
         self._notice_room_lock = asyncio.Lock()
+        self._notice_send_lock = asyncio.Lock()
         self.by_mxid[mxid] = self
         self.command_status = None
         self.is_whitelisted, self.is_admin, self.permission_level = config.get_permissions(mxid)
@@ -409,7 +411,9 @@ class User(BaseUser):
                                                                   else MessageType.NOTICE))
             if edit:
                 content.set_edit(edit)
-            event_id = await self.az.intent.send_message(await self.get_notice_room(), content)
+            # This is locked to prevent notices going out in the wrong order
+            async with self._notice_send_lock:
+                event_id = await self.az.intent.send_message(await self.get_notice_room(), content)
         except Exception:
             self.log.warning("Failed to send bridge notice", exc_info=True)
         return edit or event_id
diff --git a/requirements.txt b/requirements.txt
index f3fbb4b..cd39601 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,5 +4,5 @@ alembic>=1,<2
 ruamel.yaml>=0.15.94,<0.17
 commonmark>=0.8,<0.10
 python-magic>=0.4,<0.5
-mautrix==0.5.0
+mautrix==0.5.1
 fbchat-asyncio==0.6.0b2
-- 
GitLab