summary refs log tree commit diff
path: root/synapse/push/push_tools.py
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2020-10-19 17:06:14 +0100
committerAndrew Morgan <andrew@amorgan.xyz>2020-10-19 17:06:14 +0100
commitd47db9e9e9fad4e171aab3de12dd5c214cf71ed4 (patch)
tree8f4dd37e2694f18ad44b1b69e3cd1e04b591b6e5 /synapse/push/push_tools.py
parentMerge commit 'fe6cfc80e' into anoa/dinsic_release_1_21_x (diff)
parentRevert #7736 (#8039) (diff)
downloadsynapse-d47db9e9e9fad4e171aab3de12dd5c214cf71ed4.tar.xz
Merge commit '2ffd6783c' into anoa/dinsic_release_1_21_x
* commit '2ffd6783c':
  Revert #7736 (#8039)
Diffstat (limited to 'synapse/push/push_tools.py')
-rw-r--r--synapse/push/push_tools.py17
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