diff options
author | Paul "LeoNerd" Evans <paul@matrix.org> | 2014-11-18 15:25:55 +0000 |
---|---|---|
committer | Paul "LeoNerd" Evans <paul@matrix.org> | 2014-11-18 15:25:55 +0000 |
commit | 759db7d7d51029e23540cffee09b03da2c33a744 (patch) | |
tree | 9d6afbc306401e9e15ca49c724a8537c93c13304 /synapse | |
parent | Don't expect all _user_cachemap entries to definitely contain a "last_active"... (diff) | |
download | synapse-759db7d7d51029e23540cffee09b03da2c33a744.tar.xz |
Added ability to .get_state() from the PresenceHandler by returning a complete m.presence event
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/handlers/presence.py | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index 36d864e3f1..325ae45257 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -165,7 +165,7 @@ class PresenceHandler(BaseHandler): defer.returnValue(False) @defer.inlineCallbacks - def get_state(self, target_user, auth_user): + def get_state(self, target_user, auth_user, as_event=False): if target_user.is_mine: visible = yield self.is_presence_visible( observer_user=auth_user, @@ -191,7 +191,20 @@ class PresenceHandler(BaseHandler): state["last_active_ago"] = int( self.clock.time_msec() - state.pop("last_active") ) - defer.returnValue(state) + + if as_event: + content = state + + content["user_id"] = target_user.to_string() + + if "last_active" in content: + content["last_active_ago"] = int( + self._clock.time_msec() - content.pop("last_active") + ) + + defer.returnValue({"type": "m.presence", "content": content}) + else: + defer.returnValue(state) @defer.inlineCallbacks @log_function |