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.lib.avatar import absolute_avatar_url
|
||||
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.timestamp import datetime_to_timestamp, timestamp_to_datetime
|
||||
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_email'] = message.sender.email
|
||||
|
||||
if message.is_stream_message():
|
||||
if message.recipient.type == Recipient.STREAM:
|
||||
data['recipient_type'] = "stream"
|
||||
data['stream'] = get_display_recipient(message.recipient)
|
||||
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"
|
||||
|
||||
return data
|
||||
|
||||
@@ -28,6 +28,7 @@ from zerver.models import (
|
||||
get_realm,
|
||||
Recipient,
|
||||
Stream,
|
||||
Subscription,
|
||||
)
|
||||
from zerver.lib.soft_deactivation import do_soft_deactivate_users
|
||||
from zerver.lib import push_notifications as apn
|
||||
@@ -679,7 +680,10 @@ class TestGetAlertFromMessage(PushNotificationTest):
|
||||
|
||||
class TestGetAPNsPayload(PushNotificationTest):
|
||||
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'
|
||||
payload = apn.get_apns_payload(message)
|
||||
expected = {
|
||||
@@ -692,6 +696,10 @@ class TestGetAPNsPayload(PushNotificationTest):
|
||||
'zulip': {
|
||||
'message_ids': [message.id],
|
||||
'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_id': 4,
|
||||
'server': settings.EXTERNAL_HOST,
|
||||
@@ -731,7 +739,10 @@ class TestGetAPNsPayload(PushNotificationTest):
|
||||
|
||||
@override_settings(PUSH_NOTIFICATION_REDACT_CONTENT = True)
|
||||
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'
|
||||
payload = apn.get_apns_payload(message)
|
||||
expected = {
|
||||
@@ -744,6 +755,10 @@ class TestGetAPNsPayload(PushNotificationTest):
|
||||
'zulip': {
|
||||
'message_ids': [message.id],
|
||||
'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_id': 4,
|
||||
'server': settings.EXTERNAL_HOST,
|
||||
|
||||
Reference in New Issue
Block a user