Push: Use storage apis that are cached

pull/527/head
Erik Johnston 2016-01-25 13:53:05 +00:00
parent d685ae73b4
commit 53cb173663
2 changed files with 14 additions and 17 deletions

View File

@ -17,7 +17,6 @@ from twisted.internet import defer
from synapse.streams.config import PaginationConfig from synapse.streams.config import PaginationConfig
from synapse.types import StreamToken from synapse.types import StreamToken
from synapse.api.constants import Membership
import synapse.util.async import synapse.util.async
import push_rule_evaluator as push_rule_evaluator import push_rule_evaluator as push_rule_evaluator
@ -296,31 +295,28 @@ class Pusher(object):
@defer.inlineCallbacks @defer.inlineCallbacks
def _get_badge_count(self): def _get_badge_count(self):
room_list = yield self.store.get_rooms_for_user_where_membership_is( invites, joins = yield defer.gatherResults([
user_id=self.user_id, self.store.get_invites_for_user(self.user_id),
membership_list=(Membership.INVITE, Membership.JOIN) self.store.get_rooms_for_user(self.user_id),
) ], consumeErrors=True)
my_receipts_by_room = yield self.store.get_receipts_for_user( my_receipts_by_room = yield self.store.get_receipts_for_user(
self.user_id, self.user_id,
"m.read", "m.read",
) )
badge = 0 badge = len(invites)
for r in room_list: for r in joins:
if r.membership == Membership.INVITE: if r.room_id in my_receipts_by_room:
badge += 1 last_unread_event_id = my_receipts_by_room[r.room_id]
else:
if r.room_id in my_receipts_by_room:
last_unread_event_id = my_receipts_by_room[r.room_id]
notifs = yield ( notifs = yield (
self.store.get_unread_event_push_actions_by_room_for_user( self.store.get_unread_event_push_actions_by_room_for_user(
r.room_id, self.user_id, last_unread_event_id r.room_id, self.user_id, last_unread_event_id
)
) )
badge += len(notifs) )
badge += len(notifs)
defer.returnValue(badge) defer.returnValue(badge)

View File

@ -110,6 +110,7 @@ class RoomMemberStore(SQLBaseStore):
membership=membership, membership=membership,
).addCallback(self._get_events) ).addCallback(self._get_events)
@cached()
def get_invites_for_user(self, user_id): def get_invites_for_user(self, user_id):
""" Get all the invite events for a user """ Get all the invite events for a user
Args: Args: