Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 1777831

Browse files
committed
Convert retun type of get_events_around to attrs.
1 parent 0d3b625 commit 1777831

File tree

4 files changed

+54
-47
lines changed

4 files changed

+54
-47
lines changed

synapse/handlers/room.py

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1180,40 +1180,38 @@ async def filter_evts(events: List[EventBase]) -> List[EventBase]:
11801180
results = await self.store.get_events_around(
11811181
room_id, event_id, before_limit, after_limit, event_filter
11821182
)
1183+
events_before = results.events_before
1184+
events_after = results.events_after
11831185

11841186
if event_filter:
1185-
results["events_before"] = await event_filter.filter(
1186-
results["events_before"]
1187-
)
1188-
results["events_after"] = await event_filter.filter(results["events_after"])
1187+
events_before = await event_filter.filter(events_before)
1188+
events_after = await event_filter.filter(events_after)
11891189

1190-
results["events_before"] = await filter_evts(results["events_before"])
1191-
results["events_after"] = await filter_evts(results["events_after"])
1190+
events_before = await filter_evts(events_before)
1191+
events_after = await filter_evts(events_after)
11921192
# filter_evts can return a pruned event in case the user is allowed to see that
11931193
# there's something there but not see the content, so use the event that's in
11941194
# `filtered` rather than the event we retrieved from the datastore.
11951195
event = filtered[0]
11961196

11971197
# Fetch the aggregations.
11981198
aggregations = await self.store.get_bundled_aggregations(
1199-
itertools.chain(
1200-
results["events_before"], (event,), results["events_after"]
1201-
),
1199+
itertools.chain(events_before, (event,), events_after),
12021200
user.to_string(),
12031201
)
12041202

1205-
if results["events_after"]:
1206-
last_event_id = results["events_after"][-1].event_id
1203+
if events_after:
1204+
last_event_id = events_after[-1].event_id
12071205
else:
12081206
last_event_id = event_id
12091207

12101208
if event_filter and event_filter.lazy_load_members:
12111209
state_filter = StateFilter.from_lazy_load_member_list(
12121210
ev.sender
12131211
for ev in itertools.chain(
1214-
results["events_before"],
1212+
events_before,
12151213
(event,),
1216-
results["events_after"],
1214+
events_after,
12171215
)
12181216
)
12191217
else:
@@ -1236,15 +1234,15 @@ async def filter_evts(events: List[EventBase]) -> List[EventBase]:
12361234
token = StreamToken.START
12371235

12381236
return EventContext(
1239-
events_before=results["events_before"],
1237+
events_before=events_before,
12401238
event=event,
1241-
events_after=results["events_after"],
1239+
events_after=events_after,
12421240
state=await filter_evts(state_events),
12431241
aggregations=aggregations,
1244-
start=await token.copy_and_replace("room_key", results["start"]).to_string(
1242+
start=await token.copy_and_replace("room_key", results.start).to_string(
12451243
self.store
12461244
),
1247-
end=await token.copy_and_replace("room_key", results["end"]).to_string(
1245+
end=await token.copy_and_replace("room_key", results.end).to_string(
12481246
self.store
12491247
),
12501248
)

synapse/handlers/search.py

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -361,36 +361,37 @@ async def search(
361361

362362
logger.info(
363363
"Context for search returned %d and %d events",
364-
len(res["events_before"]),
365-
len(res["events_after"]),
364+
len(res.events_before),
365+
len(res.events_after),
366366
)
367367

368-
res["events_before"] = await filter_events_for_client(
369-
self.storage, user.to_string(), res["events_before"]
368+
events_before = await filter_events_for_client(
369+
self.storage, user.to_string(), res.events_before
370370
)
371371

372-
res["events_after"] = await filter_events_for_client(
373-
self.storage, user.to_string(), res["events_after"]
372+
events_after = await filter_events_for_client(
373+
self.storage, user.to_string(), res.events_after
374374
)
375375

376-
res["start"] = await now_token.copy_and_replace(
377-
"room_key", res["start"]
378-
).to_string(self.store)
379-
380-
res["end"] = await now_token.copy_and_replace(
381-
"room_key", res["end"]
382-
).to_string(self.store)
376+
context = {
377+
"events_before": events_before,
378+
"events_after": events_after,
379+
"start": await now_token.copy_and_replace(
380+
"room_key", res.start
381+
).to_string(self.store),
382+
"end": await now_token.copy_and_replace(
383+
"room_key", res.end
384+
).to_string(self.store),
385+
}
383386

384387
if include_profile:
385388
senders = {
386389
ev.sender
387-
for ev in itertools.chain(
388-
res["events_before"], [event], res["events_after"]
389-
)
390+
for ev in itertools.chain(events_before, [event], events_after)
390391
}
391392

392-
if res["events_after"]:
393-
last_event_id = res["events_after"][-1].event_id
393+
if events_after:
394+
last_event_id = events_after[-1].event_id
394395
else:
395396
last_event_id = event.event_id
396397

@@ -402,7 +403,7 @@ async def search(
402403
last_event_id, state_filter
403404
)
404405

405-
res["profile_info"] = {
406+
context["profile_info"] = {
406407
s.state_key: {
407408
"displayname": s.content.get("displayname", None),
408409
"avatar_url": s.content.get("avatar_url", None),
@@ -411,7 +412,7 @@ async def search(
411412
if s.type == EventTypes.Member and s.state_key in senders
412413
}
413414

414-
contexts[event.event_id] = res
415+
contexts[event.event_id] = context
415416
else:
416417
contexts = {}
417418

@@ -421,10 +422,10 @@ async def search(
421422

422423
for context in contexts.values():
423424
context["events_before"] = self._event_serializer.serialize_events(
424-
context["events_before"], time_now
425+
context["events_before"], time_now # type: ignore[arg-type]
425426
)
426427
context["events_after"] = self._event_serializer.serialize_events(
427-
context["events_after"], time_now
428+
context["events_after"], time_now # type: ignore[arg-type]
428429
)
429430

430431
state_results = {}

synapse/push/mailer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ async def _get_notif_vars(
455455
}
456456

457457
the_events = await filter_events_for_client(
458-
self.storage, user_id, results["events_before"]
458+
self.storage, user_id, results.events_before
459459
)
460460
the_events.append(notif_event)
461461

synapse/storage/databases/main/stream.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ class _EventDictReturn:
8181
stream_ordering: int
8282

8383

84+
@attr.s(slots=True, frozen=True, auto_attribs=True)
85+
class _EventsAround:
86+
events_before: List[EventBase]
87+
events_after: List[EventBase]
88+
start: RoomStreamToken
89+
end: RoomStreamToken
90+
91+
8492
def generate_pagination_where_clause(
8593
direction: str,
8694
column_names: Tuple[str, str],
@@ -846,7 +854,7 @@ async def get_events_around(
846854
before_limit: int,
847855
after_limit: int,
848856
event_filter: Optional[Filter] = None,
849-
) -> dict:
857+
) -> _EventsAround:
850858
"""Retrieve events and pagination tokens around a given event in a
851859
room.
852860
"""
@@ -869,12 +877,12 @@ async def get_events_around(
869877
list(results["after"]["event_ids"]), get_prev_content=True
870878
)
871879

872-
return {
873-
"events_before": events_before,
874-
"events_after": events_after,
875-
"start": results["before"]["token"],
876-
"end": results["after"]["token"],
877-
}
880+
return _EventsAround(
881+
events_before=events_before,
882+
events_after=events_after,
883+
start=results["before"]["token"],
884+
end=results["after"]["token"],
885+
)
878886

879887
def _get_events_around_txn(
880888
self,

0 commit comments

Comments
 (0)