summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2014-08-26 19:40:29 +0100
committerErik Johnston <erik@matrix.org>2014-08-26 19:40:29 +0100
commit67c5f89244b9ff5f1deca199f35ef7240d0549cc (patch)
tree04abccb8896322ecf086bdd18d290f3dbfc537a7
parentFix exceptions so that the event stream works. Presence like events are turne... (diff)
downloadsynapse-67c5f89244b9ff5f1deca199f35ef7240d0549cc.tar.xz
Enable presence again. Fix up api to match old api.
Diffstat (limited to '')
-rw-r--r--synapse/handlers/events.py13
-rw-r--r--synapse/handlers/presence.py4
-rw-r--r--synapse/handlers/room.py4
-rw-r--r--synapse/notifier.py20
-rw-r--r--synapse/streams/events.py4
5 files changed, 35 insertions, 10 deletions
diff --git a/synapse/handlers/events.py b/synapse/handlers/events.py
index 2d7bd5083b..8c34776245 100644
--- a/synapse/handlers/events.py
+++ b/synapse/handlers/events.py
@@ -15,6 +15,8 @@
 
 from twisted.internet import defer
 
+from synapse.api.events import SynapseEvent
+
 from ._base import BaseHandler
 
 import logging
@@ -50,10 +52,15 @@ class EventStreamHandler(BaseHandler):
 
         events, tokens = yield self.notifier.get_events_for(auth_user, pagin_config, timeout)
 
+        chunks = [
+            e.get_dict() if isinstance(e, SynapseEvent) else e
+            for e in events
+        ]
+
         chunk = {
-            "chunk": [e.get_dict() for e in events],
-            "start_token": tokens[0].to_string(),
-            "end_token": tokens[1].to_string(),
+            "chunk": chunks,
+            "start": tokens[0].to_string(),
+            "end": tokens[1].to_string(),
         }
 
         defer.returnValue(chunk)
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py
index 30d6269e2e..8408266da0 100644
--- a/synapse/handlers/presence.py
+++ b/synapse/handlers/presence.py
@@ -142,7 +142,7 @@ class PresenceHandler(BaseHandler):
     @defer.inlineCallbacks
     def is_presence_visible(self, observer_user, observed_user):
         defer.returnValue(True)
-        return
+        #return
         # FIXME (erikj): This code path absolutely kills the database.
 
         assert(observed_user.is_mine)
@@ -189,7 +189,7 @@ class PresenceHandler(BaseHandler):
 
     @defer.inlineCallbacks
     def set_state(self, target_user, auth_user, state):
-        return
+        # return
         # TODO (erikj): Turn this back on. Why did we end up sending EDUs
         # everywhere?
 
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py
index 20b4bbb665..6fbe84ea40 100644
--- a/synapse/handlers/room.py
+++ b/synapse/handlers/room.py
@@ -126,8 +126,8 @@ class MessageHandler(BaseHandler):
 
         chunk = {
             "chunk": [e.get_dict() for e in events],
-            "start_token": from_token.to_string(),
-            "end_token": next_token.to_string(),
+            "start": from_token.to_string(),
+            "end": next_token.to_string(),
         }
 
         defer.returnValue(chunk)
diff --git a/synapse/notifier.py b/synapse/notifier.py
index 1911fd20ae..df9be29f3d 100644
--- a/synapse/notifier.py
+++ b/synapse/notifier.py
@@ -91,7 +91,25 @@ class Notifier(object):
                 )
 
     def on_new_user_event(self, *args, **kwargs):
-        pass
+        source = self.event_sources.sources[1]
+
+        listeners = self.signal_keys_to_users.get(
+            (source.SIGNAL_NAME, "moose"),
+            []
+        )
+
+        for listener in listeners:
+            events, end_token = yield source.get_new_events_for_user(
+                listener.user,
+                listener.from_token,
+                listener.limit,
+                key="moose",
+            )
+
+            if events:
+                listener.notify(
+                    self, events, listener.from_token, end_token
+                )
 
     def get_events_for(self, user, pagination_config, timeout):
         deferred = defer.Deferred()
diff --git a/synapse/streams/events.py b/synapse/streams/events.py
index 887c792104..27c7734b36 100644
--- a/synapse/streams/events.py
+++ b/synapse/streams/events.py
@@ -97,7 +97,7 @@ class PresenceStreamSource(object):
             data = [x[1].make_event(user=x[0], clock=clock) for x in updates]
 
             end_token = from_token.copy_and_replace(
-                "presence_key", latest_serial
+                "presence_key", latest_serial + 1
             )
             return ((data, end_token))
         else:
@@ -107,7 +107,7 @@ class PresenceStreamSource(object):
             return (([], end_token))
 
     def get_keys_for_user(self, user):
-        return defer.succeed([])
+        return defer.succeed(["moose"])
 
     def get_current_token_part(self):
         presence = self.hs.get_handlers().presence_handler