mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +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 + ":"
|
return message.sender.full_name + ":"
|
||||||
|
|
||||||
def get_apns_badge_count(user_profile: UserProfile, read_messages_ids: Optional[Sequence[int]]=[]) -> int:
|
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(
|
return UserMessage.objects.filter(
|
||||||
user_profile=user_profile
|
user_profile=user_profile
|
||||||
).extra(
|
).extra(
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from unittest import mock
|
|||||||
from django.utils.timezone import now as timezone_now
|
from django.utils.timezone import now as timezone_now
|
||||||
|
|
||||||
from zerver.lib.actions import get_client
|
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.lib.test_classes import ZulipTestCase
|
||||||
from zerver.models import Subscription, UserPresence
|
from zerver.models import Subscription, UserPresence
|
||||||
from zerver.tornado.event_queue import maybe_enqueue_notifications
|
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:
|
def test_clear_notification_when_mention_removed(self) -> None:
|
||||||
mentioned_user = self.example_user('iago')
|
mentioned_user = self.example_user('iago')
|
||||||
self.assertEqual(get_apns_badge_count(mentioned_user), 0)
|
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):
|
with mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value=True):
|
||||||
message_id = self._login_and_send_original_stream_message(
|
message_id = self._login_and_send_original_stream_message(
|
||||||
content="@**Iago**",
|
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(
|
self._get_queued_data_for_message_update(
|
||||||
message_id=message_id,
|
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(mentioned_user), 0)
|
||||||
|
self.assertEqual(get_apns_badge_count_future(mentioned_user), 0)
|
||||||
|
|
||||||
def test_clear_notification_when_group_mention_removed(self) -> None:
|
def test_clear_notification_when_group_mention_removed(self) -> None:
|
||||||
group_mentioned_user = self.example_user('cordelia')
|
group_mentioned_user = self.example_user('cordelia')
|
||||||
self.assertEqual(get_apns_badge_count(group_mentioned_user), 0)
|
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):
|
with mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value=True):
|
||||||
message_id = self._login_and_send_original_stream_message(
|
message_id = self._login_and_send_original_stream_message(
|
||||||
content="Hello @*hamletcharacters*",
|
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(
|
self._get_queued_data_for_message_update(
|
||||||
message_id=message_id,
|
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(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:
|
def test_not_clear_notification_when_mention_removed_but_stream_notified(self) -> None:
|
||||||
mentioned_user = self.example_user('iago')
|
mentioned_user = self.example_user('iago')
|
||||||
@@ -538,17 +544,20 @@ class EditMessageSideEffectsTest(ZulipTestCase):
|
|||||||
mentioned_user.save()
|
mentioned_user.save()
|
||||||
|
|
||||||
self.assertEqual(get_apns_badge_count(mentioned_user), 0)
|
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):
|
with mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value=True):
|
||||||
message_id = self._login_and_send_original_stream_message(
|
message_id = self._login_and_send_original_stream_message(
|
||||||
content="@**Iago**",
|
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(
|
self._get_queued_data_for_message_update(
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
content="Removed mention"
|
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,
|
b64_to_hex,
|
||||||
datetime_to_timestamp,
|
datetime_to_timestamp,
|
||||||
get_apns_badge_count,
|
get_apns_badge_count,
|
||||||
|
get_apns_badge_count_future,
|
||||||
get_apns_client,
|
get_apns_client,
|
||||||
get_display_recipient,
|
get_display_recipient,
|
||||||
get_message_payload_apns,
|
get_message_payload_apns,
|
||||||
@@ -1250,27 +1251,31 @@ class TestAPNs(PushNotificationTest):
|
|||||||
|
|
||||||
@mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value = True)
|
@mock.patch('zerver.lib.push_notifications.push_notifications_enabled', return_value = True)
|
||||||
def test_apns_badge_count(self, mock_push_notifications: mock.MagicMock) -> None:
|
def test_apns_badge_count(self, mock_push_notifications: mock.MagicMock) -> None:
|
||||||
|
|
||||||
user_profile = self.example_user('othello')
|
user_profile = self.example_user('othello')
|
||||||
# Test APNs badge count for personal messages.
|
# Test APNs badge count for personal messages.
|
||||||
message_ids = [self.send_personal_message(self.sender,
|
message_ids = [self.send_personal_message(self.sender,
|
||||||
user_profile,
|
user_profile,
|
||||||
'Content of message')
|
'Content of message')
|
||||||
for i in range(3)]
|
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.
|
# Similarly, test APNs badge count for stream mention.
|
||||||
stream = self.subscribe(user_profile, "Denmark")
|
stream = self.subscribe(user_profile, "Denmark")
|
||||||
message_ids += [self.send_stream_message(self.sender,
|
message_ids += [self.send_stream_message(self.sender,
|
||||||
stream.name,
|
stream.name,
|
||||||
'Hi, @**Othello, the Moor of Venice**')
|
'Hi, @**Othello, the Moor of Venice**')
|
||||||
for i in range(2)]
|
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)
|
num_messages = len(message_ids)
|
||||||
# Mark the messages as read and test whether
|
# Mark the messages as read and test whether
|
||||||
# the count decreases correctly.
|
# the count decreases correctly.
|
||||||
for i, message_id in enumerate(message_ids):
|
for i, message_id in enumerate(message_ids):
|
||||||
do_update_message_flags(user_profile, get_client("website"), 'add', 'read', [message_id])
|
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()
|
mock_push_notifications.assert_called()
|
||||||
|
|
||||||
@@ -1324,7 +1329,7 @@ class TestGetAPNsPayload(PushNotificationTest):
|
|||||||
'body': message.content,
|
'body': message.content,
|
||||||
},
|
},
|
||||||
'sound': 'default',
|
'sound': 'default',
|
||||||
'badge': 1,
|
'badge': 0,
|
||||||
'custom': {
|
'custom': {
|
||||||
'zulip': {
|
'zulip': {
|
||||||
'message_ids': [message.id],
|
'message_ids': [message.id],
|
||||||
|
|||||||
Reference in New Issue
Block a user