mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 15:03:34 +00:00
push_notifications: Disable badge counts.
We include tests for the new implementation to avoid churning the codebase too much so this can be easily reverted when we are able to re-enable the feature.
This commit is contained in:
@@ -629,6 +629,14 @@ def get_apns_alert_subtitle(message: Message) -> str:
|
||||
return message.sender.full_name + ":"
|
||||
|
||||
def get_apns_badge_count(user_profile: UserProfile, read_messages_ids: Optional[Sequence[int]]=[]) -> int:
|
||||
# NOTE: We have temporarily set get_apns_badge_count to always
|
||||
# return 0 until we can debug a likely mobile app side issue with
|
||||
# handling notifications while the app is open.
|
||||
return 0
|
||||
|
||||
def get_apns_badge_count_future(user_profile: UserProfile, read_messages_ids: Optional[Sequence[int]]=[]) -> int:
|
||||
# Future implementation of get_apns_badge_count; unused but
|
||||
# we expect to use this once we resolve client-side bugs.
|
||||
return UserMessage.objects.filter(
|
||||
user_profile=user_profile
|
||||
).extra(
|
||||
|
||||
@@ -4,7 +4,7 @@ from unittest import mock
|
||||
from django.utils.timezone import now as timezone_now
|
||||
|
||||
from zerver.lib.actions import get_client
|
||||
from zerver.lib.push_notifications import get_apns_badge_count
|
||||
from zerver.lib.push_notifications import get_apns_badge_count, get_apns_badge_count_future
|
||||
from zerver.lib.test_classes import ZulipTestCase
|
||||
from zerver.models import Subscription, UserPresence
|
||||
from zerver.tornado.event_queue import maybe_enqueue_notifications
|
||||
@@ -498,13 +498,15 @@ class EditMessageSideEffectsTest(ZulipTestCase):
|
||||
def test_clear_notification_when_mention_removed(self) -> None:
|
||||
mentioned_user = self.example_user('iago')
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(mentioned_user), 0)
|
||||
|
||||
with mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value=True):
|
||||
message_id = self._login_and_send_original_stream_message(
|
||||
content="@**Iago**",
|
||||
)
|
||||
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 1)
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(mentioned_user), 1)
|
||||
|
||||
self._get_queued_data_for_message_update(
|
||||
message_id=message_id,
|
||||
@@ -512,17 +514,20 @@ class EditMessageSideEffectsTest(ZulipTestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(mentioned_user), 0)
|
||||
|
||||
def test_clear_notification_when_group_mention_removed(self) -> None:
|
||||
group_mentioned_user = self.example_user('cordelia')
|
||||
self.assertEqual(get_apns_badge_count(group_mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(group_mentioned_user), 0)
|
||||
|
||||
with mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value=True):
|
||||
message_id = self._login_and_send_original_stream_message(
|
||||
content="Hello @*hamletcharacters*",
|
||||
)
|
||||
|
||||
self.assertEqual(get_apns_badge_count(group_mentioned_user), 1)
|
||||
self.assertEqual(get_apns_badge_count(group_mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(group_mentioned_user), 1)
|
||||
|
||||
self._get_queued_data_for_message_update(
|
||||
message_id=message_id,
|
||||
@@ -531,6 +536,7 @@ class EditMessageSideEffectsTest(ZulipTestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(get_apns_badge_count(group_mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(group_mentioned_user), 0)
|
||||
|
||||
def test_not_clear_notification_when_mention_removed_but_stream_notified(self) -> None:
|
||||
mentioned_user = self.example_user('iago')
|
||||
@@ -538,17 +544,20 @@ class EditMessageSideEffectsTest(ZulipTestCase):
|
||||
mentioned_user.save()
|
||||
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(mentioned_user), 0)
|
||||
|
||||
with mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value=True):
|
||||
message_id = self._login_and_send_original_stream_message(
|
||||
content="@**Iago**",
|
||||
)
|
||||
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 1)
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(mentioned_user), 1)
|
||||
|
||||
self._get_queued_data_for_message_update(
|
||||
message_id=message_id,
|
||||
content="Removed mention"
|
||||
)
|
||||
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 1)
|
||||
self.assertEqual(get_apns_badge_count(mentioned_user), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(mentioned_user), 1)
|
||||
|
||||
@@ -32,6 +32,7 @@ from zerver.lib.push_notifications import (
|
||||
b64_to_hex,
|
||||
datetime_to_timestamp,
|
||||
get_apns_badge_count,
|
||||
get_apns_badge_count_future,
|
||||
get_apns_client,
|
||||
get_display_recipient,
|
||||
get_message_payload_apns,
|
||||
@@ -1250,27 +1251,31 @@ class TestAPNs(PushNotificationTest):
|
||||
|
||||
@mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value = True)
|
||||
def test_apns_badge_count(self, mock_push_notifications: mock.MagicMock) -> None:
|
||||
|
||||
user_profile = self.example_user('othello')
|
||||
# Test APNs badge count for personal messages.
|
||||
message_ids = [self.send_personal_message(self.sender,
|
||||
user_profile,
|
||||
'Content of message')
|
||||
for i in range(3)]
|
||||
self.assertEqual(get_apns_badge_count(user_profile), 3)
|
||||
self.assertEqual(get_apns_badge_count(user_profile), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(user_profile), 3)
|
||||
# Similarly, test APNs badge count for stream mention.
|
||||
stream = self.subscribe(user_profile, "Denmark")
|
||||
message_ids += [self.send_stream_message(self.sender,
|
||||
stream.name,
|
||||
'Hi, @**Othello, the Moor of Venice**')
|
||||
for i in range(2)]
|
||||
self.assertEqual(get_apns_badge_count(user_profile), 5)
|
||||
self.assertEqual(get_apns_badge_count(user_profile), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(user_profile), 5)
|
||||
|
||||
num_messages = len(message_ids)
|
||||
# Mark the messages as read and test whether
|
||||
# the count decreases correctly.
|
||||
for i, message_id in enumerate(message_ids):
|
||||
do_update_message_flags(user_profile, get_client("website"), 'add', 'read', [message_id])
|
||||
self.assertEqual(get_apns_badge_count(user_profile), num_messages - i - 1)
|
||||
self.assertEqual(get_apns_badge_count(user_profile), 0)
|
||||
self.assertEqual(get_apns_badge_count_future(user_profile), num_messages - i - 1)
|
||||
|
||||
mock_push_notifications.assert_called()
|
||||
|
||||
@@ -1324,7 +1329,7 @@ class TestGetAPNsPayload(PushNotificationTest):
|
||||
'body': message.content,
|
||||
},
|
||||
'sound': 'default',
|
||||
'badge': 1,
|
||||
'badge': 0,
|
||||
'custom': {
|
||||
'zulip': {
|
||||
'message_ids': [message.id],
|
||||
|
||||
Reference in New Issue
Block a user