mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-13 11:22:20 -04:00
Revert "Revert accidental fast-forward merge from v1.49.0rc1"
This reverts commit 158d73ebdd
.
This commit is contained in:
parent
158d73ebdd
commit
4dd9ea8f4f
165 changed files with 7715 additions and 2703 deletions
|
@ -716,10 +716,7 @@ class RoomEventContextServlet(RestServlet):
|
|||
results["events_after"], time_now
|
||||
)
|
||||
results["state"] = await self._event_serializer.serialize_events(
|
||||
results["state"],
|
||||
time_now,
|
||||
# No need to bundle aggregations for state events
|
||||
bundle_relations=False,
|
||||
results["state"], time_now
|
||||
)
|
||||
|
||||
return 200, results
|
||||
|
@ -1070,6 +1067,62 @@ def register_txn_path(
|
|||
)
|
||||
|
||||
|
||||
class TimestampLookupRestServlet(RestServlet):
|
||||
"""
|
||||
API endpoint to fetch the `event_id` of the closest event to the given
|
||||
timestamp (`ts` query parameter) in the given direction (`dir` query
|
||||
parameter).
|
||||
|
||||
Useful for cases like jump to date so you can start paginating messages from
|
||||
a given date in the archive.
|
||||
|
||||
`ts` is a timestamp in milliseconds where we will find the closest event in
|
||||
the given direction.
|
||||
|
||||
`dir` can be `f` or `b` to indicate forwards and backwards in time from the
|
||||
given timestamp.
|
||||
|
||||
GET /_matrix/client/unstable/org.matrix.msc3030/rooms/<roomID>/timestamp_to_event?ts=<timestamp>&dir=<direction>
|
||||
{
|
||||
"event_id": ...
|
||||
}
|
||||
"""
|
||||
|
||||
PATTERNS = (
|
||||
re.compile(
|
||||
"^/_matrix/client/unstable/org.matrix.msc3030"
|
||||
"/rooms/(?P<room_id>[^/]*)/timestamp_to_event$"
|
||||
),
|
||||
)
|
||||
|
||||
def __init__(self, hs: "HomeServer"):
|
||||
super().__init__()
|
||||
self._auth = hs.get_auth()
|
||||
self._store = hs.get_datastore()
|
||||
self.timestamp_lookup_handler = hs.get_timestamp_lookup_handler()
|
||||
|
||||
async def on_GET(
|
||||
self, request: SynapseRequest, room_id: str
|
||||
) -> Tuple[int, JsonDict]:
|
||||
requester = await self._auth.get_user_by_req(request)
|
||||
await self._auth.check_user_in_room(room_id, requester.user.to_string())
|
||||
|
||||
timestamp = parse_integer(request, "ts", required=True)
|
||||
direction = parse_string(request, "dir", default="f", allowed_values=["f", "b"])
|
||||
|
||||
(
|
||||
event_id,
|
||||
origin_server_ts,
|
||||
) = await self.timestamp_lookup_handler.get_event_for_timestamp(
|
||||
requester, room_id, timestamp, direction
|
||||
)
|
||||
|
||||
return 200, {
|
||||
"event_id": event_id,
|
||||
"origin_server_ts": origin_server_ts,
|
||||
}
|
||||
|
||||
|
||||
class RoomSpaceSummaryRestServlet(RestServlet):
|
||||
PATTERNS = (
|
||||
re.compile(
|
||||
|
@ -1140,7 +1193,7 @@ class RoomSpaceSummaryRestServlet(RestServlet):
|
|||
class RoomHierarchyRestServlet(RestServlet):
|
||||
PATTERNS = (
|
||||
re.compile(
|
||||
"^/_matrix/client/unstable/org.matrix.msc2946"
|
||||
"^/_matrix/client/(v1|unstable/org.matrix.msc2946)"
|
||||
"/rooms/(?P<room_id>[^/]*)/hierarchy$"
|
||||
),
|
||||
)
|
||||
|
@ -1168,7 +1221,7 @@ class RoomHierarchyRestServlet(RestServlet):
|
|||
)
|
||||
|
||||
return 200, await self._room_summary_handler.get_room_hierarchy(
|
||||
requester.user.to_string(),
|
||||
requester,
|
||||
room_id,
|
||||
suggested_only=parse_boolean(request, "suggested_only", default=False),
|
||||
max_depth=max_depth,
|
||||
|
@ -1239,6 +1292,8 @@ def register_servlets(
|
|||
RoomAliasListServlet(hs).register(http_server)
|
||||
SearchRestServlet(hs).register(http_server)
|
||||
RoomCreateRestServlet(hs).register(http_server)
|
||||
if hs.config.experimental.msc3030_enabled:
|
||||
TimestampLookupRestServlet(hs).register(http_server)
|
||||
|
||||
# Some servlets only get registered for the main process.
|
||||
if not is_worker:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue