Pārlūkot izejas kodu

disappearing messages: refactor init_cls to not be async

Introduces a new function that gets called at startup instead.
Sumner Evans 3 gadi atpakaļ
vecāks
revīzija
8d70a664ac
2 mainītis faili ar 5 papildinājumiem un 3 dzēšanām
  1. 2 1
      mautrix_signal/__main__.py
  2. 3 2
      mautrix_signal/portal.py

+ 2 - 1
mautrix_signal/__main__.py

@@ -68,12 +68,13 @@ class SignalBridge(Bridge):
     async def start(self) -> None:
         User.init_cls(self)
         self.add_startup_actions(Puppet.init_cls(self))
-        self.add_startup_actions(Portal.init_cls(self))
+        Portal.init_cls(self)
         if self.config["bridge.resend_bridge_info"]:
             self.add_startup_actions(self.resend_bridge_info())
         self.add_startup_actions(self.signal.start())
         await super().start()
         self.periodic_sync_task = asyncio.create_task(self._periodic_sync_loop())
+        asyncio.create_task(Portal.start_disappearing_message_expirations())
 
     @staticmethod
     async def _actual_periodic_sync_loop(log: logging.Logger, interval: int) -> None:

+ 3 - 2
mautrix_signal/portal.py

@@ -147,7 +147,7 @@ class Portal(DBPortal, BasePortal):
         self.by_chat_id[(self.chat_id_str, self.receiver)] = self
 
     @classmethod
-    async def init_cls(cls, bridge: 'SignalBridge') -> None:
+    def init_cls(cls, bridge: 'SignalBridge') -> None:
         cls.config = bridge.config
         cls.matrix = bridge.matrix
         cls.signal = bridge.signal
@@ -156,6 +156,8 @@ class Portal(DBPortal, BasePortal):
         BasePortal.bridge = bridge
         cls.private_chat_portal_meta = cls.config["bridge.private_chat_portal_meta"]
 
+    @classmethod
+    async def start_disappearing_message_expirations(cls):
         for dm in await DisappearingMessage.get_all():
             if dm.expiration_ts:
                 asyncio.create_task(cls._expire_event(dm))
@@ -1294,7 +1296,6 @@ class Portal(DBPortal, BasePortal):
         elif not self.is_direct:
             self._main_intent = self.az.intent
 
-
     async def delete(self) -> None:
         await DBMessage.delete_all(self.mxid)
         self.by_mxid.pop(self.mxid, None)