Skip to content
Snippets Groups Projects
Commit f091b73e authored by Erik Johnston's avatar Erik Johnston
Browse files

Merge pull request #527 from matrix-org/erikj/push_cache

Push: Use storage apis that are cached
parents ce6fbbea 53cb1736
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......
......@@ -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:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment