Merge branch 'master' of github.com:matrix-org/synapse into release-v0.2.0

Conflicts:
	synapse/notifier.py
	webclient/room/room-controller.js
	webclient/room/room.html
This commit is contained in:
Erik Johnston 2014-09-02 15:26:11 +01:00
commit 464e1fcfa5
4 changed files with 56 additions and 4 deletions

View File

@ -1,3 +1,38 @@
Changes in synapse 0.1.2 (2014-08-29)
=====================================
Webclient:
* Add basic call state UI for VoIP calls.
Changes in synapse 0.1.1 (2014-08-29)
=====================================
Homeserver:
* Fix bug that caused the event stream to not notify some clients about
changes.
Changes in synapse 0.1.0 (2014-08-29)
=====================================
Presence has been reenabled in this release.
Homeserver:
* Update client to server API, including:
- Use a more consistent url scheme.
- Provide more useful information in the initial sync api.
* Change the presence handling to be much more efficient.
* Change the presence server to server API to not require explicit polling of
all users who share a room with a user.
* Fix races in the event streaming logic.
Webclient:
* Update to use new client to server API.
* Add basic VOIP support.
* Add idle timers that change your status to away.
* Add recent rooms column when viewing a room.
* Various network efficiency improvements.
* Add basic mobile browser support.
* Add a settings page.
Changes in synapse 0.0.1 (2014-08-22) Changes in synapse 0.0.1 (2014-08-22)
===================================== =====================================
Presence has been disabled in this release due to a bug that caused the Presence has been disabled in this release due to a bug that caused the

View File

@ -1 +1 @@
0.0.1 0.1.2

View File

@ -16,4 +16,4 @@
""" This is a reference implementation of a synapse home server. """ This is a reference implementation of a synapse home server.
""" """
__version__ = "0.0.1" __version__ = "0.1.2"

View File

@ -106,7 +106,9 @@ class Notifier(object):
# TODO (erikj): Can we make this more efficient by hitting the # TODO (erikj): Can we make this more efficient by hitting the
# db once? # db once?
for listener in listeners:
@defer.inlineCallbacks
def notify(listener):
events, end_key = yield room_source.get_new_events_for_user( events, end_key = yield room_source.get_new_events_for_user(
listener.user, listener.user,
listener.from_token.room_key, listener.from_token.room_key,
@ -122,6 +124,13 @@ class Notifier(object):
self, events, listener.from_token, end_token self, events, listener.from_token, end_token
) )
def eb(failure):
logger.exception("Failed to notify listener", failure)
yield defer.DeferredList(
[notify(l).addErrback(eb) for l in listeners]
)
@defer.inlineCallbacks @defer.inlineCallbacks
@log_function @log_function
def on_new_user_event(self, users=[], rooms=[]): def on_new_user_event(self, users=[], rooms=[]):
@ -140,7 +149,8 @@ class Notifier(object):
for room in rooms: for room in rooms:
listeners |= self.rooms_to_listeners.get(room, set()).copy() listeners |= self.rooms_to_listeners.get(room, set()).copy()
for listener in listeners: @defer.inlineCallbacks
def notify(listener):
events, end_key = yield presence_source.get_new_events_for_user( events, end_key = yield presence_source.get_new_events_for_user(
listener.user, listener.user,
listener.from_token.presence_key, listener.from_token.presence_key,
@ -156,6 +166,13 @@ class Notifier(object):
self, events, listener.from_token, end_token self, events, listener.from_token, end_token
) )
def eb(failure):
logger.exception("Failed to notify listener", failure)
yield defer.DeferredList(
[notify(l).addErrback(eb) for l in listeners]
)
def get_events_for(self, user, rooms, pagination_config, timeout): def get_events_for(self, user, rooms, pagination_config, timeout):
""" For the given user and rooms, return any new events for them. If """ For the given user and rooms, return any new events for them. If
there are no new events wait for up to `timeout` milliseconds for any there are no new events wait for up to `timeout` milliseconds for any