mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 07:54:48 -04:00
Clean up types for PaginationConfig (#8250)
This removes `SourcePaginationConfig` and `get_pagination_rows`. The reasoning behind this is that these generic classes/functions erased the types of the IDs it used (i.e. instead of passing around `StreamToken` it'd pass in e.g. `token.room_key`, which don't have uniform types).
This commit is contained in:
parent
703e2b8a96
commit
0f545e6b96
7 changed files with 52 additions and 86 deletions
|
@ -335,20 +335,16 @@ class PaginationHandler:
|
|||
user_id = requester.user.to_string()
|
||||
|
||||
if pagin_config.from_token:
|
||||
room_token = pagin_config.from_token.room_key
|
||||
from_token = pagin_config.from_token
|
||||
else:
|
||||
pagin_config.from_token = (
|
||||
self.hs.get_event_sources().get_current_token_for_pagination()
|
||||
)
|
||||
room_token = pagin_config.from_token.room_key
|
||||
from_token = self.hs.get_event_sources().get_current_token_for_pagination()
|
||||
|
||||
room_token = RoomStreamToken.parse(room_token)
|
||||
if pagin_config.limit is None:
|
||||
# This shouldn't happen as we've set a default limit before this
|
||||
# gets called.
|
||||
raise Exception("limit not set")
|
||||
|
||||
pagin_config.from_token = pagin_config.from_token.copy_and_replace(
|
||||
"room_key", str(room_token)
|
||||
)
|
||||
|
||||
source_config = pagin_config.get_source_config("room")
|
||||
room_token = RoomStreamToken.parse(from_token.room_key)
|
||||
|
||||
with await self.pagination_lock.read(room_id):
|
||||
(
|
||||
|
@ -358,7 +354,7 @@ class PaginationHandler:
|
|||
room_id, user_id, allow_departed_users=True
|
||||
)
|
||||
|
||||
if source_config.direction == "b":
|
||||
if pagin_config.direction == "b":
|
||||
# if we're going backwards, we might need to backfill. This
|
||||
# requires that we have a topo token.
|
||||
if room_token.topological:
|
||||
|
@ -381,22 +377,28 @@ class PaginationHandler:
|
|||
member_event_id
|
||||
)
|
||||
if RoomStreamToken.parse(leave_token).topological < max_topo:
|
||||
source_config.from_key = str(leave_token)
|
||||
from_token = from_token.copy_and_replace(
|
||||
"room_key", leave_token
|
||||
)
|
||||
|
||||
await self.hs.get_handlers().federation_handler.maybe_backfill(
|
||||
room_id, max_topo
|
||||
)
|
||||
|
||||
to_room_key = None
|
||||
if pagin_config.to_token:
|
||||
to_room_key = pagin_config.to_token.room_key
|
||||
|
||||
events, next_key = await self.store.paginate_room_events(
|
||||
room_id=room_id,
|
||||
from_key=source_config.from_key,
|
||||
to_key=source_config.to_key,
|
||||
direction=source_config.direction,
|
||||
limit=source_config.limit,
|
||||
from_key=from_token.room_key,
|
||||
to_key=to_room_key,
|
||||
direction=pagin_config.direction,
|
||||
limit=pagin_config.limit,
|
||||
event_filter=event_filter,
|
||||
)
|
||||
|
||||
next_token = pagin_config.from_token.copy_and_replace("room_key", next_key)
|
||||
next_token = from_token.copy_and_replace("room_key", next_key)
|
||||
|
||||
if events:
|
||||
if event_filter:
|
||||
|
@ -409,7 +411,7 @@ class PaginationHandler:
|
|||
if not events:
|
||||
return {
|
||||
"chunk": [],
|
||||
"start": pagin_config.from_token.to_string(),
|
||||
"start": from_token.to_string(),
|
||||
"end": next_token.to_string(),
|
||||
}
|
||||
|
||||
|
@ -438,7 +440,7 @@ class PaginationHandler:
|
|||
events, time_now, as_client_event=as_client_event
|
||||
)
|
||||
),
|
||||
"start": pagin_config.from_token.to_string(),
|
||||
"start": from_token.to_string(),
|
||||
"end": next_token.to_string(),
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue