summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Haines <mark.haines@matrix.org>2015-10-08 15:17:43 +0100
committerMark Haines <mark.haines@matrix.org>2015-10-08 15:17:43 +0100
commitdfef2b41aa3202b130661c3c423b2cf7d0dbba97 (patch)
tree5820cdca8c47710b2bb6f8552e11280873bc3cad
parentUpdate the sync response to match the latest spec (diff)
downloadsynapse-dfef2b41aa3202b130661c3c423b2cf7d0dbba97.tar.xz
Update the v2 room sync format to match the current v2 spec
-rw-r--r--synapse/handlers/sync.py25
-rw-r--r--synapse/rest/client/v2_alpha/sync.py14
2 files changed, 18 insertions, 21 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py
index 9d488fa251..76cca7c621 100644
--- a/synapse/handlers/sync.py
+++ b/synapse/handlers/sync.py
@@ -165,8 +165,7 @@ class SyncHandler(BaseHandler):
         ))
 
     @defer.inlineCallbacks
-    def initial_sync_for_room(self, room_id, sync_config, now_token,
-                              published_room_ids):
+    def initial_sync_for_room(self, room_id, sync_config, now_token):
         """Sync a room for a client which is starting without any state
         Returns:
             A Deferred RoomSyncResult.
@@ -230,10 +229,6 @@ class SyncHandler(BaseHandler):
                 sync_config.user
             )
 
-        # TODO (mjark): Does public mean "published"?
-        published_rooms = yield self.store.get_rooms(is_public=True)
-        published_room_ids = set(r["room_id"] for r in published_rooms)
-
         timeline_limit = sync_config.filter.timeline_limit()
 
         room_events, _ = yield self.store.get_room_events_stream(
@@ -268,11 +263,12 @@ class SyncHandler(BaseHandler):
 
                 room_sync = RoomSyncResult(
                     room_id=room_id,
-                    published=room_id in published_room_ids,
-                    events=recents,
-                    prev_batch=prev_batch,
+                    timeline=TimelineBatch(
+                        events=recents,
+                        prev_batch=prev_batch,
+                        limited=False,
+                    ),
                     state=state,
-                    limited=False,
                     ephemeral=typing_by_room.get(room_id, [])
                 )
                 if room_sync:
@@ -344,11 +340,11 @@ class SyncHandler(BaseHandler):
         limited = True
         recents = []
         filtering_factor = 2
-        load_limit = max(sync_config.limit * filtering_factor, 100)
+        timeline_limit = sync_config.filter.timeline_limit()
+        load_limit = max(timeline_limit * filtering_factor, 100)
         max_repeat = 3  # Only try a few times per room, otherwise
         room_key = now_token.room_key
         end_key = room_key
-        timeline_limit = sync_config.filter.timeline_limit()
 
         while limited and len(recents) < timeline_limit and max_repeat:
             events, keys = yield self.store.get_recent_events_for_room(
@@ -369,8 +365,9 @@ class SyncHandler(BaseHandler):
                 limited = False
             max_repeat -= 1
 
-        if len(recents) > sync_config.limit:
-            recents = recents[-sync_config.limit:]
+        if len(recents) > timeline_limit:
+            limited = True
+            recents = recents[-timeline_limit:]
             room_key = recents[0].internal_metadata.before
 
         prev_batch_token = now_token.copy_and_replace(
diff --git a/synapse/rest/client/v2_alpha/sync.py b/synapse/rest/client/v2_alpha/sync.py
index 84011918af..97bf95acfb 100644
--- a/synapse/rest/client/v2_alpha/sync.py
+++ b/synapse/rest/client/v2_alpha/sync.py
@@ -158,7 +158,7 @@ class SyncRestServlet(RestServlet):
     def encode_room(room, filter, time_now, token_id):
         event_map = {}
         state_events = filter.filter_room_state(room.state)
-        recent_events = filter.filter_room_events(room.events)
+        recent_events = filter.filter_room_events(room.timeline.events)
         state_event_ids = []
         recent_event_ids = []
         for event in state_events:
@@ -178,13 +178,13 @@ class SyncRestServlet(RestServlet):
             recent_event_ids.append(event.event_id)
         result = {
             "event_map": event_map,
-            "events": {
-                "batch": recent_event_ids,
-                "prev_batch": room.prev_batch.to_string(),
+            "timeline": {
+                "events": recent_event_ids,
+                "prev_batch": room.timeline.prev_batch.to_string(),
+                "limited": room.timeline.limited,
             },
-            "state": state_event_ids,
-            "limited": room.limited,
-            "ephemeral": room.ephemeral,
+            "state": {"events": state_event_ids},
+            "ephemeral": {"events": room.ephemeral},
         }
         return result