Disable calculating unread counts unless the config flag is enabled. (#13694)

This avoids doing work that will never be used (since the
resulting unread counts will never be sent in a /sync
response).

The negative of doing this is that unread counts will be
incorrect when the feature is initially enabled.
This commit is contained in:
Patrick Cloke 2022-09-01 12:52:03 -04:00 committed by GitHub
parent f48f4dd59e
commit 390b7ce946
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 23 deletions

View file

@ -67,9 +67,7 @@ class EventPushActionsStoreTestCase(HomeserverTestCase):
last_event_id: str
def _assert_counts(
noitf_count: int, unread_count: int, highlight_count: int
) -> None:
def _assert_counts(noitf_count: int, highlight_count: int) -> None:
counts = self.get_success(
self.store.db_pool.runInteraction(
"get-unread-counts",
@ -82,7 +80,7 @@ class EventPushActionsStoreTestCase(HomeserverTestCase):
counts,
NotifCounts(
notify_count=noitf_count,
unread_count=unread_count,
unread_count=0,
highlight_count=highlight_count,
),
)
@ -112,27 +110,27 @@ class EventPushActionsStoreTestCase(HomeserverTestCase):
)
)
_assert_counts(0, 0, 0)
_assert_counts(0, 0)
_create_event()
_assert_counts(1, 1, 0)
_assert_counts(1, 0)
_rotate()
_assert_counts(1, 1, 0)
_assert_counts(1, 0)
event_id = _create_event()
_assert_counts(2, 2, 0)
_assert_counts(2, 0)
_rotate()
_assert_counts(2, 2, 0)
_assert_counts(2, 0)
_create_event()
_mark_read(event_id)
_assert_counts(1, 1, 0)
_assert_counts(1, 0)
_mark_read(last_event_id)
_assert_counts(0, 0, 0)
_assert_counts(0, 0)
_create_event()
_rotate()
_assert_counts(1, 1, 0)
_assert_counts(1, 0)
# Delete old event push actions, this should not affect the (summarised) count.
#
@ -151,35 +149,35 @@ class EventPushActionsStoreTestCase(HomeserverTestCase):
)
)
self.assertEqual(result, [])
_assert_counts(1, 1, 0)
_assert_counts(1, 0)
_mark_read(last_event_id)
_assert_counts(0, 0, 0)
_assert_counts(0, 0)
event_id = _create_event(True)
_assert_counts(1, 1, 1)
_assert_counts(1, 1)
_rotate()
_assert_counts(1, 1, 1)
_assert_counts(1, 1)
# Check that adding another notification and rotating after highlight
# works.
_create_event()
_rotate()
_assert_counts(2, 2, 1)
_assert_counts(2, 1)
# Check that sending read receipts at different points results in the
# right counts.
_mark_read(event_id)
_assert_counts(1, 1, 0)
_assert_counts(1, 0)
_mark_read(last_event_id)
_assert_counts(0, 0, 0)
_assert_counts(0, 0)
_create_event(True)
_assert_counts(1, 1, 1)
_assert_counts(1, 1)
_mark_read(last_event_id)
_assert_counts(0, 0, 0)
_assert_counts(0, 0)
_rotate()
_assert_counts(0, 0, 0)
_assert_counts(0, 0)
def test_find_first_stream_ordering_after_ts(self) -> None:
def add_event(so: int, ts: int) -> None: