summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2020-06-17 15:10:09 +0100
committerBrendan Abolivier <babolivier@matrix.org>2020-06-17 15:10:44 +0100
commit5a5cf6460ec4b4bb3a07813c36717b5a8d4a697c (patch)
tree0e17cd8dd2c84fa8eb3cfae80ca6790bfdb1d725
parentIgnore the UI Auth sessions when porting from sqlite to postgresql (#7711) (diff)
downloadsynapse-5a5cf6460ec4b4bb3a07813c36717b5a8d4a697c.tar.xz
Fix unread counts in sync
* Always return an unread_count in get_unread_event_push_actions_by_room_for_user
* Don't always expect unread_count to be there so we don't take out sync entirely if something goes wrong
-rw-r--r--changelog.d/7716.feature1
-rw-r--r--synapse/push/push_tools.py2
-rw-r--r--synapse/storage/data_stores/main/event_push_actions.py2
3 files changed, 3 insertions, 2 deletions
diff --git a/changelog.d/7716.feature b/changelog.d/7716.feature
new file mode 100644
index 0000000000..ecc3ffd8d5
--- /dev/null
+++ b/changelog.d/7716.feature
@@ -0,0 +1 @@
+Add a per-room counter for unread messages in responses to `/sync` requests. Implements [MSC2625](https://github.com/matrix-org/matrix-doc/pull/2625).
diff --git a/synapse/push/push_tools.py b/synapse/push/push_tools.py
index 9f264ca4a4..4ea683fee0 100644
--- a/synapse/push/push_tools.py
+++ b/synapse/push/push_tools.py
@@ -42,7 +42,7 @@ def get_badge_count(store, user_id):
             # We're populating this badge using the unread_count (instead of the
             # notify_count) as this badge is the number of missed messages, not the
             # number of missed notifications.
-            badge += 1 if notifs["unread_count"] else 0
+            badge += 1 if notifs.get("unread_count") else 0
     return badge
 
 
diff --git a/synapse/storage/data_stores/main/event_push_actions.py b/synapse/storage/data_stores/main/event_push_actions.py
index ba1b33a0a9..815d52ab4c 100644
--- a/synapse/storage/data_stores/main/event_push_actions.py
+++ b/synapse/storage/data_stores/main/event_push_actions.py
@@ -123,7 +123,7 @@ class EventPushActionsWorkerStore(SQLBaseStore):
         txn.execute(sql, (room_id, last_read_event_id))
         results = txn.fetchall()
         if len(results) == 0:
-            return {"notify_count": 0, "highlight_count": 0}
+            return {"notify_count": 0, "highlight_count": 0, "unread_count": 0}
 
         stream_ordering = results[0][0]