mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
push notifs: For group PMs, identify the users in the group.
This commit is contained in:
@@ -26,7 +26,7 @@ import ujson
|
|||||||
from zerver.decorator import statsd_increment
|
from zerver.decorator import statsd_increment
|
||||||
from zerver.lib.avatar import absolute_avatar_url
|
from zerver.lib.avatar import absolute_avatar_url
|
||||||
from zerver.lib.exceptions import ErrorCode, JsonableError
|
from zerver.lib.exceptions import ErrorCode, JsonableError
|
||||||
from zerver.lib.message import access_message
|
from zerver.lib.message import access_message, huddle_users
|
||||||
from zerver.lib.queue import retry_event
|
from zerver.lib.queue import retry_event
|
||||||
from zerver.lib.timestamp import datetime_to_timestamp, timestamp_to_datetime
|
from zerver.lib.timestamp import datetime_to_timestamp, timestamp_to_datetime
|
||||||
from zerver.lib.utils import generate_random_token
|
from zerver.lib.utils import generate_random_token
|
||||||
@@ -479,11 +479,14 @@ def get_common_payload(message: Message) -> Dict[str, Any]:
|
|||||||
data['sender_id'] = message.sender.id
|
data['sender_id'] = message.sender.id
|
||||||
data['sender_email'] = message.sender.email
|
data['sender_email'] = message.sender.email
|
||||||
|
|
||||||
if message.is_stream_message():
|
if message.recipient.type == Recipient.STREAM:
|
||||||
data['recipient_type'] = "stream"
|
data['recipient_type'] = "stream"
|
||||||
data['stream'] = get_display_recipient(message.recipient)
|
data['stream'] = get_display_recipient(message.recipient)
|
||||||
data['topic'] = message.subject
|
data['topic'] = message.subject
|
||||||
else:
|
elif message.recipient.type == Recipient.HUDDLE:
|
||||||
|
data['recipient_type'] = "private"
|
||||||
|
data['pm_users'] = huddle_users(message.recipient.id)
|
||||||
|
else: # Recipient.PERSONAL
|
||||||
data['recipient_type'] = "private"
|
data['recipient_type'] = "private"
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ from zerver.models import (
|
|||||||
get_realm,
|
get_realm,
|
||||||
Recipient,
|
Recipient,
|
||||||
Stream,
|
Stream,
|
||||||
|
Subscription,
|
||||||
)
|
)
|
||||||
from zerver.lib.soft_deactivation import do_soft_deactivate_users
|
from zerver.lib.soft_deactivation import do_soft_deactivate_users
|
||||||
from zerver.lib import push_notifications as apn
|
from zerver.lib import push_notifications as apn
|
||||||
@@ -679,7 +680,10 @@ class TestGetAlertFromMessage(PushNotificationTest):
|
|||||||
|
|
||||||
class TestGetAPNsPayload(PushNotificationTest):
|
class TestGetAPNsPayload(PushNotificationTest):
|
||||||
def test_get_apns_payload(self) -> None:
|
def test_get_apns_payload(self) -> None:
|
||||||
message = self.get_message(Recipient.HUDDLE)
|
message_id = self.send_huddle_message(
|
||||||
|
self.sender.email,
|
||||||
|
[self.example_email('othello'), self.example_email('cordelia')])
|
||||||
|
message = Message.objects.get(id=message_id)
|
||||||
message.trigger = 'private_message'
|
message.trigger = 'private_message'
|
||||||
payload = apn.get_apns_payload(message)
|
payload = apn.get_apns_payload(message)
|
||||||
expected = {
|
expected = {
|
||||||
@@ -692,6 +696,10 @@ class TestGetAPNsPayload(PushNotificationTest):
|
|||||||
'zulip': {
|
'zulip': {
|
||||||
'message_ids': [message.id],
|
'message_ids': [message.id],
|
||||||
'recipient_type': 'private',
|
'recipient_type': 'private',
|
||||||
|
'pm_users': ','.join(
|
||||||
|
str(s.user_profile_id)
|
||||||
|
for s in Subscription.objects.filter(
|
||||||
|
recipient=message.recipient)),
|
||||||
'sender_email': 'hamlet@zulip.com',
|
'sender_email': 'hamlet@zulip.com',
|
||||||
'sender_id': 4,
|
'sender_id': 4,
|
||||||
'server': settings.EXTERNAL_HOST,
|
'server': settings.EXTERNAL_HOST,
|
||||||
@@ -731,7 +739,10 @@ class TestGetAPNsPayload(PushNotificationTest):
|
|||||||
|
|
||||||
@override_settings(PUSH_NOTIFICATION_REDACT_CONTENT = True)
|
@override_settings(PUSH_NOTIFICATION_REDACT_CONTENT = True)
|
||||||
def test_get_apns_payload_redacted_content(self) -> None:
|
def test_get_apns_payload_redacted_content(self) -> None:
|
||||||
message = self.get_message(Recipient.HUDDLE)
|
message_id = self.send_huddle_message(
|
||||||
|
self.sender.email,
|
||||||
|
[self.example_email('othello'), self.example_email('cordelia')])
|
||||||
|
message = Message.objects.get(id=message_id)
|
||||||
message.trigger = 'private_message'
|
message.trigger = 'private_message'
|
||||||
payload = apn.get_apns_payload(message)
|
payload = apn.get_apns_payload(message)
|
||||||
expected = {
|
expected = {
|
||||||
@@ -744,6 +755,10 @@ class TestGetAPNsPayload(PushNotificationTest):
|
|||||||
'zulip': {
|
'zulip': {
|
||||||
'message_ids': [message.id],
|
'message_ids': [message.id],
|
||||||
'recipient_type': 'private',
|
'recipient_type': 'private',
|
||||||
|
'pm_users': ','.join(
|
||||||
|
str(s.user_profile_id)
|
||||||
|
for s in Subscription.objects.filter(
|
||||||
|
recipient=message.recipient)),
|
||||||
'sender_email': self.example_email("hamlet"),
|
'sender_email': self.example_email("hamlet"),
|
||||||
'sender_id': 4,
|
'sender_id': 4,
|
||||||
'server': settings.EXTERNAL_HOST,
|
'server': settings.EXTERNAL_HOST,
|
||||||
|
|||||||
Reference in New Issue
Block a user