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
|