diff options
Diffstat (limited to 'synapse/handlers/presence.py')
-rw-r--r-- | synapse/handlers/presence.py | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index c79bb6ff76..c225b7428a 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -178,9 +178,6 @@ class PresenceHandler(BaseHandler): if not visible: raise SynapseError(404, "Presence information not visible") state = yield self.store.get_presence_state(target_user.localpart) - if "mtime" in state: - del state["mtime"] - state["presence"] = state.pop("state") if target_user in self._user_cachemap: state["last_active"] = ( @@ -226,13 +223,17 @@ class PresenceHandler(BaseHandler): logger.debug("Updating presence state of %s to %s", target_user.localpart, state["presence"]) - state_to_store = dict(state) - state_to_store["state"] = state_to_store.pop("presence") - statuscache=self._get_or_offline_usercache(target_user) - was_level = self.STATE_LEVELS[statuscache.get_state()["presence"]] + oldstate = statuscache.get_state() + + was_level = self.STATE_LEVELS[oldstate["presence"]] now_level = self.STATE_LEVELS[state["presence"]] + if now_level > was_level: + state["last_active"] = self.clock.time_msec() + + state_to_store = dict(state) + yield defer.DeferredList([ self.store.set_presence_state( target_user.localpart, state_to_store @@ -242,9 +243,6 @@ class PresenceHandler(BaseHandler): ), ]) - if now_level > was_level: - state["last_active"] = self.clock.time_msec() - now_online = state["presence"] != PresenceState.OFFLINE was_polling = target_user in self._user_cachemap @@ -595,8 +593,6 @@ class PresenceHandler(BaseHandler): def _push_presence_remote(self, user, destination, state=None): if state is None: state = yield self.store.get_presence_state(user.localpart) - del state["mtime"] - state["presence"] = state.pop("state") if user in self._user_cachemap: state["last_active"] = ( @@ -884,8 +880,6 @@ class UserPresenceCache(object): self.serial = None def update(self, state, serial): - assert("mtime_age" not in state) - self.state.update(state) # Delete keys that are now 'None' for k in self.state.keys(): |