Fixed indentation (w). Probably fixed redactions sometimes displaying viewing user's name in place of actor's name. Fixed room history never loading sometimes (but not missing chunks in the middle yet).
This commit is contained in:
parent
bc20e47fb1
commit
b6543b09cc
|
@ -1107,26 +1107,24 @@ class MatrixClient(nio.AsyncClient):
|
|||
|
||||
Returns whether there are any messages left to load.
|
||||
"""
|
||||
|
||||
log.info("loading events for %s",room_id)
|
||||
if room_id in self.fully_loaded_rooms or \
|
||||
room_id in self.invited_rooms or \
|
||||
room_id in self.cleared_events_rooms or \
|
||||
self.models[self.user_id, "rooms"][room_id].left:
|
||||
return False
|
||||
|
||||
log.info("waiting for first sync %s",room_id)
|
||||
await self.first_sync_done.wait()
|
||||
|
||||
while not self.past_tokens.get(room_id):
|
||||
log.info("waiting for past token %s",room_id)
|
||||
i=0
|
||||
while i<100 and not self.past_tokens.get(room_id):
|
||||
# If a new room was added, wait for onSyncResponse to set the token
|
||||
await asyncio.sleep(0.1)
|
||||
|
||||
response = await self.room_messages(
|
||||
room_id = room_id,
|
||||
start = self.past_tokens[room_id],
|
||||
limit = 100 if room_id in self.loaded_once_rooms else 10,
|
||||
message_filter = self.lazy_load_filter,
|
||||
)
|
||||
|
||||
i+=1 # Give up waiting after 10 seconds and just fetch from newest instead. This fixes a bug where initial sync occasionally inserts None into the batch for some reason - I'm blaming nio currently. Also fixes a bug where the room just straight up doesn't seem to exist in initial sync, but somehow still ends up in room list.
|
||||
log.info("performing actual fetch %s",room_id)
|
||||
args={"room_id":room_id,"limit":100 if room_id in self.loaded_once_rooms else 10,"message_filter":self.lazy_load_filter,"start":self.past_tokens.get(room_id)}
|
||||
response = await self.room_messages(**args)
|
||||
log.info("data returned %s",room_id)
|
||||
self.loaded_once_rooms.add(room_id)
|
||||
more_to_load = True
|
||||
|
||||
|
@ -1575,6 +1573,9 @@ class MatrixClient(nio.AsyncClient):
|
|||
resp = await self.get_presence(user_id)
|
||||
except (MatrixForbidden, MatrixUnrecognized):
|
||||
return
|
||||
except MatrixError as e:
|
||||
if e.http_code==500: return # Probably conduit which hasn't implemented it yet
|
||||
else: raise
|
||||
|
||||
await self.nio_callbacks.onPresenceEvent(nio.PresenceEvent(
|
||||
user_id = resp.user_id,
|
||||
|
@ -1843,7 +1844,7 @@ class MatrixClient(nio.AsyncClient):
|
|||
|
||||
auth = {
|
||||
"type": "m.login.password",
|
||||
"user": self.user_id,
|
||||
"identifier": {"type":"m.id.user", "user":self.user_id},
|
||||
"password": password,
|
||||
}
|
||||
|
||||
|
@ -2317,7 +2318,7 @@ class MatrixClient(nio.AsyncClient):
|
|||
ev.set_fields(target_name=target_name, target_avatar=target_avatar)
|
||||
|
||||
if ev.redacter_id and not ev.redacter_name:
|
||||
redacter_name, _, _ = await get_profile(ev.target_id)
|
||||
redacter_name, _, _ = await get_profile(ev.redacter_id)
|
||||
ev.redacter_name = redacter_name
|
||||
|
||||
ev.fetch_profile = False
|
||||
|
|
|
@ -82,9 +82,11 @@ class NioCallbacks:
|
|||
await self.client.register_nio_room(self.client.all_rooms[room_id])
|
||||
|
||||
for room_id, info in resp.rooms.join.items():
|
||||
log.info("%s %a",room_id,room_id in self.client.past_tokens)
|
||||
await self.client.register_nio_room(self.client.rooms[room_id])
|
||||
|
||||
if room_id not in self.client.past_tokens:
|
||||
log.info("adding %s to %s's past_tokens", info.timeline.prev_batch,room_id)
|
||||
self.client.past_tokens[room_id] = info.timeline.prev_batch
|
||||
|
||||
for ev in info.state:
|
||||
|
|
Loading…
Reference in New Issue
Block a user