Reset badge count to zero when last active time is bumped

This commit is contained in:
David Baker 2015-01-28 11:55:49 +00:00
parent f7c4daa8f9
commit 273b12729b
4 changed files with 76 additions and 3 deletions

View file

@ -18,6 +18,7 @@ from twisted.internet import defer
from httppusher import HttpPusher
from synapse.push import PusherConfigException
from synapse.api.constants import PresenceState
import logging
import json
@ -32,6 +33,22 @@ class PusherPool:
self.pushers = {}
self.last_pusher_started = -1
distributor = self.hs.get_distributor()
distributor.observe(
"user_presence_changed", self.user_presence_changed
)
@defer.inlineCallbacks
def user_presence_changed(self, user, state):
user_name = user.to_string()
# until we have read receipts, pushers use this to reset a user's
# badge counters to zero
for p in self.pushers.values():
if p.user_name == user_name:
yield p.presence_changed(state)
@defer.inlineCallbacks
def start(self):
pushers = yield self.store.get_all_pushers()