Browse Source

Update expiration timer before handling messages

Requires https://gitlab.com/signald/signald/-/merge_requests/143 for full support
Tulir Asokan 3 years ago
parent
commit
af62941748
2 changed files with 3 additions and 2 deletions
  1. 1 0
      mausignald/types.py
  2. 2 2
      mautrix_signal/signal.py

+ 1 - 0
mausignald/types.py

@@ -395,6 +395,7 @@ class MessageData(SerializableAttrs):
 
     end_session: bool = field(default=False, json="endSession")
     expires_in_seconds: int = field(default=0, json="expiresInSeconds")
+    is_expiration_update: bool = field(default=False, json="isExpirationUpdate")
     profile_key_update: bool = field(default=False, json="profileKeyUpdate")
     view_once: bool = field(default=False, json="viewOnce")
 

+ 2 - 2
mautrix_signal/signal.py

@@ -213,12 +213,12 @@ class SignalHandler(SignaldClient):
         elif msg.group_v2 and msg.group_v2.revision > portal.revision:
             self.log.debug(f"Got new revision of {msg.group_v2.id}, updating info")
             await portal.update_info(user, msg.group_v2, sender)
+        if msg.expires_in_seconds is not None and (msg.is_message or msg.is_expiration_update):
+            await portal.update_expires_in_seconds(sender, msg.expires_in_seconds)
         if msg.reaction:
             await portal.handle_signal_reaction(sender, msg.reaction, msg.timestamp)
         if msg.is_message:
             await portal.handle_signal_message(user, sender, msg)
-            if msg.expires_in_seconds is not None:
-                await portal.update_expires_in_seconds(sender, msg.expires_in_seconds)
         if msg.group and msg.group.type == "UPDATE":
             await portal.update_info(user, msg.group)
         if msg.remote_delete: