Merge pull request #389 from matrix-org/rav/flatten_sync_response

v2 sync: Get rid of the event_map, and rename the keys of the rooms obj
This commit is contained in:
Richard van der Hoff 2015-11-20 15:18:55 +00:00
commit 1d9c1d4166
2 changed files with 17 additions and 27 deletions

View file

@ -129,10 +129,9 @@ def format_event_for_client_v2(d):
return d return d
def format_event_for_client_v2_without_event_id(d): def format_event_for_client_v2_without_room_id(d):
d = format_event_for_client_v2(d) d = format_event_for_client_v2(d)
d.pop("room_id", None) d.pop("room_id", None)
d.pop("event_id", None)
return d return d

View file

@ -22,7 +22,7 @@ from synapse.handlers.sync import SyncConfig
from synapse.types import StreamToken from synapse.types import StreamToken
from synapse.events import FrozenEvent from synapse.events import FrozenEvent
from synapse.events.utils import ( from synapse.events.utils import (
serialize_event, format_event_for_client_v2_without_event_id, serialize_event, format_event_for_client_v2_without_room_id,
) )
from synapse.api.filtering import FilterCollection from synapse.api.filtering import FilterCollection
from ._base import client_v2_pattern from ._base import client_v2_pattern
@ -148,9 +148,9 @@ class SyncRestServlet(RestServlet):
sync_result.presence, filter, time_now sync_result.presence, filter, time_now
), ),
"rooms": { "rooms": {
"joined": joined, "join": joined,
"invited": invited, "invite": invited,
"archived": archived, "leave": archived,
}, },
"next_batch": sync_result.next_batch.to_string(), "next_batch": sync_result.next_batch.to_string(),
} }
@ -207,7 +207,7 @@ class SyncRestServlet(RestServlet):
for room in rooms: for room in rooms:
invite = serialize_event( invite = serialize_event(
room.invite, time_now, token_id=token_id, room.invite, time_now, token_id=token_id,
event_format=format_event_for_client_v2_without_event_id, event_format=format_event_for_client_v2_without_room_id,
) )
invited_state = invite.get("unsigned", {}).pop("invite_room_state", []) invited_state = invite.get("unsigned", {}).pop("invite_room_state", [])
invited_state.append(invite) invited_state.append(invite)
@ -256,7 +256,13 @@ class SyncRestServlet(RestServlet):
:return: the room, encoded in our response format :return: the room, encoded in our response format
:rtype: dict[str, object] :rtype: dict[str, object]
""" """
event_map = {} def serialize(event):
# TODO(mjark): Respect formatting requirements in the filter.
return serialize_event(
event, time_now, token_id=token_id,
event_format=format_event_for_client_v2_without_room_id,
)
state_dict = room.state state_dict = room.state
timeline_events = filter.filter_room_timeline(room.timeline.events) timeline_events = filter.filter_room_timeline(room.timeline.events)
@ -264,36 +270,21 @@ class SyncRestServlet(RestServlet):
state_dict, timeline_events) state_dict, timeline_events)
state_events = filter.filter_room_state(state_dict.values()) state_events = filter.filter_room_state(state_dict.values())
state_event_ids = []
for event in state_events:
# TODO(mjark): Respect formatting requirements in the filter.
event_map[event.event_id] = serialize_event(
event, time_now, token_id=token_id,
event_format=format_event_for_client_v2_without_event_id,
)
state_event_ids.append(event.event_id)
timeline_event_ids = [] serialized_state = [serialize(e) for e in state_events]
for event in timeline_events: serialized_timeline = [serialize(e) for e in timeline_events]
# TODO(mjark): Respect formatting requirements in the filter.
event_map[event.event_id] = serialize_event(
event, time_now, token_id=token_id,
event_format=format_event_for_client_v2_without_event_id,
)
timeline_event_ids.append(event.event_id)
account_data = filter.filter_room_account_data( account_data = filter.filter_room_account_data(
room.account_data room.account_data
) )
result = { result = {
"event_map": event_map,
"timeline": { "timeline": {
"events": timeline_event_ids, "events": serialized_timeline,
"prev_batch": room.timeline.prev_batch.to_string(), "prev_batch": room.timeline.prev_batch.to_string(),
"limited": room.timeline.limited, "limited": room.timeline.limited,
}, },
"state": {"events": state_event_ids}, "state": {"events": serialized_state},
"account_data": {"events": account_data}, "account_data": {"events": account_data},
} }