Tulir Asokan 4 anni fa
parent
commit
0aa066ba99

+ 3 - 3
mausignald/rpc.py

@@ -101,7 +101,7 @@ class SignaldRPCClient:
                 except Exception:
                     self.log.exception("Exception in RPC event handler")
 
-    async def _run_response_handlers(self, req_id: UUID, command: str, data: Any) -> None:
+    def _run_response_handlers(self, req_id: UUID, command: str, data: Any) -> None:
         try:
             waiter = self._response_waiters.pop(req_id)
         except KeyError:
@@ -131,9 +131,9 @@ class SignaldRPCClient:
 
         req_id = req.get("id")
         if req_id is None:
-            await self._run_rpc_handler(req_type, req)
+            self.loop.create_task(self._run_rpc_handler(req_type, req))
         else:
-            await self._run_response_handlers(UUID(req_id), req_type, req.get("data"))
+            self._run_response_handlers(UUID(req_id), req_type, req.get("data"))
 
     async def _try_read_loop(self) -> None:
         try:

+ 4 - 2
mausignald/signald.py

@@ -170,8 +170,10 @@ class SignaldClient(SignaldRPCClient):
         return ([Group.deserialize(group) for group in resp["groups"]]
                 + [GroupV2.deserialize(group) for group in resp["groupsv2"]])
 
-    async def get_group(self, username: str, group_id: GroupID) -> Optional[GroupV2]:
-        resp = await self.request("get_group", "get_group", account=username, groupID=group_id)
+    async def get_group(self, username: str, group_id: GroupID, revision: int = -1
+                        ) -> Optional[GroupV2]:
+        resp = await self.request("get_group", "get_group", account=username, groupID=group_id,
+                                  version="v1", revision=revision)
         if "id" not in resp:
             return None
         return GroupV2.deserialize(resp)

+ 1 - 3
mautrix_signal/commands/signal.py

@@ -128,11 +128,9 @@ async def raw(evt: CommandEvent) -> None:
             break
         evt.args = evt.args[1:]
     type = evt.args[0]
-    version = None
+    version = "v0"
     if "." in type:
         version, type = type.split(".", 1)
-    if version == "v0":
-        version = None
     try:
         args = json.loads(" ".join(evt.args[1:]))
     except json.JSONDecodeError as e:

+ 2 - 1
mautrix_signal/signal.py

@@ -76,7 +76,8 @@ class SignalHandler(SignaldClient):
         if msg.group_v2:
             portal = await po.Portal.get_by_chat_id(msg.group_v2.id, create=True)
             if not portal.mxid:
-                group_v2_info = await self.get_group(user.username, msg.group_v2.id)
+                group_v2_info = await self.get_group(user.username, msg.group_v2.id,
+                                                     msg.group_v2.revision or -1)
                 if not group_v2_info:
                     user.log.debug(f"Dropping message in unknown v2 group {msg.group_v2.id}")
                     return