Bundle relations of relations into the /relations result. (#11284)

Per updates to MSC2675 which now states that bundled
aggregations should be included from the `/relations`
endpoint.
This commit is contained in:
Patrick Cloke 2021-11-30 11:33:33 -05:00 committed by GitHub
parent 7ff22d6da4
commit 379f2650cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 130 additions and 6 deletions

View file

@ -435,6 +435,14 @@ class EventClientSerializer:
serialized_event: The serialized event which may be modified.
"""
# Do not bundle relations for an event which represents an edit or an
# annotation. It does not make sense for them to have related events.
relates_to = event.content.get("m.relates_to")
if isinstance(relates_to, (dict, frozendict)):
relation_type = relates_to.get("rel_type")
if relation_type in (RelationTypes.ANNOTATION, RelationTypes.REPLACE):
return
event_id = event.event_id
# The bundled relations to include.

View file

@ -230,12 +230,9 @@ class RelationPaginationServlet(RestServlet):
original_event = await self._event_serializer.serialize_event(
event, now, bundle_relations=False
)
# Similarly, we don't allow relations to be applied to relations, so we
# return the original relations without any aggregations on top of them
# here.
serialized_events = await self._event_serializer.serialize_events(
events, now, bundle_relations=False
)
# The relations returned for the requested event do include their
# bundled relations.
serialized_events = await self._event_serializer.serialize_events(events, now)
return_value = pagination_chunk.to_dict()
return_value["chunk"] = serialized_events