summary refs log tree commit diff
path: root/synapse/handlers/typing.py
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2016-03-03 11:39:25 +0000
committerRichard van der Hoff <richard@matrix.org>2016-03-03 11:39:25 +0000
commit79f34bdbc2720a832cdab36ba58e83201e549c41 (patch)
tree2bdadb2bd2d2dac1a6722c4d33ca81febb7d7ece /synapse/handlers/typing.py
parentFix typo (diff)
parentjenkins.sh: set -x (diff)
downloadsynapse-79f34bdbc2720a832cdab36ba58e83201e549c41.tar.xz
Merge branch 'develop' into rav/SYN-642
Diffstat (limited to 'synapse/handlers/typing.py')
-rw-r--r--synapse/handlers/typing.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/synapse/handlers/typing.py b/synapse/handlers/typing.py

index b16d0017df..8ce27f49ec 100644 --- a/synapse/handlers/typing.py +++ b/synapse/handlers/typing.py
@@ -25,6 +25,7 @@ from synapse.types import UserID import logging from collections import namedtuple +import ujson as json logger = logging.getLogger(__name__) @@ -219,6 +220,19 @@ class TypingNotificationHandler(BaseHandler): "typing_key", self._latest_room_serial, rooms=[room_id] ) + def get_all_typing_updates(self, last_id, current_id): + # TODO: Work out a way to do this without scanning the entire state. + rows = [] + for room_id, serial in self._room_serials.items(): + if last_id < serial and serial <= current_id: + typing = self._room_typing[room_id] + typing_bytes = json.dumps([ + u.to_string() for u in typing + ], ensure_ascii=False) + rows.append((serial, room_id, typing_bytes)) + rows.sort() + return rows + class TypingNotificationEventSource(object): def __init__(self, hs):