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

View File

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