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

Include the original event in /relations #5626

Merged
merged 4 commits into from
Jul 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/5626.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Include the original event when asking for its relations.
8 changes: 5 additions & 3 deletions synapse/rest/client/v2_alpha/relations.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,9 @@ def on_GET(self, request, room_id, parent_id, relation_type=None, event_type=Non
room_id, requester.user.to_string()
)

# This checks that a) the event exists and b) the user is allowed to
# view it.
yield self.event_handler.get_event(requester.user, room_id, parent_id)
# This gets the original event and checks that a) the event exists and
# b) the user is allowed to view it.
event = yield self.event_handler.get_event(requester.user, room_id, parent_id)

limit = parse_integer(request, "limit", default=5)
from_token = parse_string(request, "from")
Expand All @@ -173,10 +173,12 @@ def on_GET(self, request, room_id, parent_id, relation_type=None, event_type=Non
)

now = self.clock.time_msec()
original_event = yield self._event_serializer.serialize_event(event, now)
events = yield self._event_serializer.serialize_events(events, now)

return_value = result.to_dict()
return_value["chunk"] = events
return_value["original_event"] = original_event

defer.returnValue((200, return_value))

Expand Down
2 changes: 1 addition & 1 deletion synapse/storage/relations.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def to_dict(self):
class RelationPaginationToken(object):
"""Pagination token for relation pagination API.

As the results are order by topological ordering, we can use the
As the results are in topological order, we can use the
`topological_ordering` and `stream_ordering` fields of the events at the
boundaries of the chunk as pagination tokens.

Expand Down
5 changes: 5 additions & 0 deletions tests/rest/client/v2_alpha/test_relations.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,11 @@ def test_basic_paginate_relations(self):
channel.json_body["chunk"][0],
)

# We also expect to get the original event (the id of which is self.parent_id)
self.assertEquals(
channel.json_body["original_event"]["event_id"], self.parent_id
)

# Make sure next_batch has something in it that looks like it could be a
# valid token.
self.assertIsInstance(
Expand Down