diff options
author | Brendan Abolivier <babolivier@matrix.org> | 2020-08-06 17:15:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-06 17:15:35 +0100 |
commit | 2ffd6783c7af12e3c29e1a44dee4a9deeb83890b (patch) | |
tree | a757175121ecd385dd174b84b30016cf74c81350 /synapse/push/push_tools.py | |
parent | Convert some util functions to async (#8035) (diff) | |
download | synapse-2ffd6783c7af12e3c29e1a44dee4a9deeb83890b.tar.xz |
Revert #7736 (#8039)
Diffstat (limited to 'synapse/push/push_tools.py')
-rw-r--r-- | synapse/push/push_tools.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/synapse/push/push_tools.py b/synapse/push/push_tools.py index bc8f71916b..d0145666bf 100644 --- a/synapse/push/push_tools.py +++ b/synapse/push/push_tools.py @@ -21,13 +21,22 @@ async def get_badge_count(store, user_id): invites = await store.get_invited_rooms_for_local_user(user_id) joins = await store.get_rooms_for_user(user_id) + my_receipts_by_room = await store.get_receipts_for_user(user_id, "m.read") + badge = len(invites) for room_id in joins: - unread_count = await store.get_unread_message_count_for_user(room_id, user_id) - # return one badge count per conversation, as count per - # message is so noisy as to be almost useless - badge += 1 if unread_count else 0 + if room_id in my_receipts_by_room: + last_unread_event_id = my_receipts_by_room[room_id] + + notifs = await ( + store.get_unread_event_push_actions_by_room_for_user( + room_id, user_id, last_unread_event_id + ) + ) + # return one badge count per conversation, as count per + # message is so noisy as to be almost useless + badge += 1 if notifs["notify_count"] else 0 return badge |