summary refs log tree commit diff
path: root/synapse/handlers/presence.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/handlers/presence.py')
-rw-r--r--synapse/handlers/presence.py22
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():