mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2025-08-03 17:04:12 -04:00
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:
parent
7ff22d6da4
commit
379f2650cf
4 changed files with 130 additions and 6 deletions
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue