Pārlūkot izejas kodu

Get cached profiles from signald but request it more often

Tulir Asokan 3 gadi atpakaļ
vecāks
revīzija
e4de70e3ca
3 mainītis faili ar 8 papildinājumiem un 7 dzēšanām
  1. 5 2
      mausignald/signald.py
  2. 2 4
      mautrix_signal/portal.py
  3. 1 1
      mautrix_signal/user.py

+ 5 - 2
mausignald/signald.py

@@ -243,10 +243,13 @@ class SignaldClient(SignaldRPCClient):
             return None
         return GroupV2.deserialize(resp)
 
-    async def get_profile(self, username: str, address: Address) -> Optional[Profile]:
+    async def get_profile(self, username: str, address: Address, use_cache: bool = False
+                          ) -> Optional[Profile]:
         try:
+            # async is a reserved keyword, so can't pass it as a normal parameter
+            kwargs = {"async": use_cache}
             resp = await self.request_v1("get_profile", account=username,
-                                         address=address.serialize())
+                                         address=address.serialize(), **kwargs)
         except UnexpectedResponse as e:
             if e.resp_type == "profile_not_available":
                 return None

+ 2 - 4
mautrix_signal/portal.py

@@ -872,8 +872,7 @@ class Portal(DBPortal, BasePortal):
                 await self.main_intent.invite_user(self.mxid, user.mxid)
 
             puppet = await p.Puppet.get_by_address(address)
-            if not puppet.name:
-                await source.sync_contact(address)
+            await source.sync_contact(address)
             await puppet.intent_for(self).ensure_joined(self.mxid)
 
         for address in pending_members:
@@ -882,8 +881,7 @@ class Portal(DBPortal, BasePortal):
                 await self.main_intent.invite_user(self.mxid, user.mxid)
 
             puppet = await p.Puppet.get_by_address(address)
-            if not puppet.name:
-                await source.sync_contact(address)
+            await source.sync_contact(address)
             await self.main_intent.invite_user(self.mxid, puppet.intent_for(self).mxid)
 
     async def _update_power_levels(self, info: ChatInfo) -> None:

+ 1 - 1
mautrix_signal/user.py

@@ -251,7 +251,7 @@ class User(DBUser, BaseUser):
         self.log.trace("Syncing contact %s", contact)
         if isinstance(contact, Address):
             address = contact
-            profile = await self.bridge.signal.get_profile(self.username, address)
+            profile = await self.bridge.signal.get_profile(self.username, address, use_cache=True)
             if profile and profile.name:
                 self.log.trace("Got profile for %s: %s", address, profile)
         else: