Skip to content
Snippets Groups Projects
Commit e7ee0b9f authored by Erik Johnston's avatar Erik Johnston
Browse files

Change IM sync api to also return the current presence list.

parent ad869fa4
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,7 @@ from synapse.api.events.room import (
RoomConfigEvent
)
from synapse.api.streams.event import EventStream, EventsStreamData
from synapse.handlers.presence import PresenceStreamData
from synapse.util import stringutils
from ._base import BaseHandler
......@@ -257,7 +258,19 @@ class MessageHandler(BaseHandler):
membership_list=[Membership.INVITE, Membership.JOIN]
)
ret = []
rooms_ret = []
now_rooms_token = yield self.store.get_room_events_max_id()
# FIXME (erikj): Fix this.
presence_stream = PresenceStreamData(self.hs)
now_presence_token = yield presence_stream.max_token()
presence = yield presence_stream.get_rows(
user_id, 0, now_presence_token, None, None
)
# FIXME (erikj): We need to not generate this token,
now_token = "%s_%s" % (now_rooms_token, now_presence_token)
for event in room_list:
d = {
......@@ -268,14 +281,15 @@ class MessageHandler(BaseHandler):
if event.membership == Membership.INVITE:
d["inviter"] = event.user_id
ret.append(d)
rooms_ret.append(d)
if event.membership != Membership.JOIN:
continue
try:
messages, token = yield self.store.get_recent_events_for_room(
event.room_id,
limit=50,
limit=10,
end_token=now_rooms_token,
)
d["messages"] = {
......@@ -289,6 +303,10 @@ class MessageHandler(BaseHandler):
except:
logger.exception("Failed to get snapshot")
user = self.hs.parse_userid(user_id)
ret = {"rooms": rooms_ret, "presence": presence[0], "end": now_token}
logger.debug("snapshot_all_rooms returning: %s", ret)
defer.returnValue(ret)
......
......@@ -249,11 +249,10 @@ class StreamStore(SQLBaseStore):
)
@defer.inlineCallbacks
def get_recent_events_for_room(self, room_id, limit, with_feedback=False):
def get_recent_events_for_room(self, room_id, limit, end_token,
with_feedback=False):
# TODO (erikj): Handle compressed feedback
end_token = yield self.get_room_events_max_id()
sql = (
"SELECT * FROM events "
"WHERE room_id = ? AND stream_ordering <= ? "
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment