push notifs: Include same stream and sender info on GCM as on APNs.

This takes the information added to APNs payloads by #7080, and adds
to our GCM payloads the parts that it didn't already have.
This commit is contained in:
Greg Price
2017-12-15 18:01:49 -08:00
committed by Greg Price
parent e077d6fc74
commit 014900c2e5
2 changed files with 21 additions and 3 deletions

View File

@@ -440,13 +440,22 @@ def truncate_content(content: Text) -> Text:
def get_common_payload(message: Message) -> Dict[str, Any]: def get_common_payload(message: Message) -> Dict[str, Any]:
data = {} # type: Dict[str, Any] data = {} # type: Dict[str, Any]
# These will let the app support logging into multiple realms and servers.
data['server'] = settings.EXTERNAL_HOST
data['realm_id'] = message.sender.realm.id
# `sender_id` is preferred, but some existing versions use `sender_email`.
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.is_stream_message():
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: else:
data['recipient_type'] = "private" data['recipient_type'] = "private"
return data return data
def get_apns_payload(message: Message) -> Dict[str, Any]: def get_apns_payload(message: Message) -> Dict[str, Any]:
@@ -456,9 +465,6 @@ def get_apns_payload(message: Message) -> Dict[str, Any]:
zulip_data = get_common_payload(message) zulip_data = get_common_payload(message)
zulip_data.update({ zulip_data.update({
'message_ids': [message.id], 'message_ids': [message.id],
'sender_id': message.sender.id,
'server': settings.EXTERNAL_HOST,
'realm_id': message.sender.realm.id,
}) })
apns_data = { apns_data = {

View File

@@ -750,6 +750,9 @@ class TestGetGCMPayload(PushNotificationTest):
"time": apn.datetime_to_timestamp(message.pub_date), "time": apn.datetime_to_timestamp(message.pub_date),
"content": 'a' * 200 + '', "content": 'a' * 200 + '',
"content_truncated": True, "content_truncated": True,
"server": settings.EXTERNAL_HOST,
"realm_id": self.example_user("hamlet").realm.id,
"sender_id": self.example_user("hamlet").id,
"sender_email": self.example_email("hamlet"), "sender_email": self.example_email("hamlet"),
"sender_full_name": "King Hamlet", "sender_full_name": "King Hamlet",
"sender_avatar_url": apn.absolute_avatar_url(message.sender), "sender_avatar_url": apn.absolute_avatar_url(message.sender),
@@ -772,6 +775,9 @@ class TestGetGCMPayload(PushNotificationTest):
"time": apn.datetime_to_timestamp(message.pub_date), "time": apn.datetime_to_timestamp(message.pub_date),
"content": message.content, "content": message.content,
"content_truncated": False, "content_truncated": False,
"server": settings.EXTERNAL_HOST,
"realm_id": self.example_user("hamlet").realm.id,
"sender_id": self.example_user("hamlet").id,
"sender_email": self.example_email("hamlet"), "sender_email": self.example_email("hamlet"),
"sender_full_name": "King Hamlet", "sender_full_name": "King Hamlet",
"sender_avatar_url": apn.absolute_avatar_url(message.sender), "sender_avatar_url": apn.absolute_avatar_url(message.sender),
@@ -793,6 +799,9 @@ class TestGetGCMPayload(PushNotificationTest):
"time": apn.datetime_to_timestamp(message.pub_date), "time": apn.datetime_to_timestamp(message.pub_date),
"content": message.content, "content": message.content,
"content_truncated": False, "content_truncated": False,
"server": settings.EXTERNAL_HOST,
"realm_id": self.example_user("hamlet").realm.id,
"sender_id": self.example_user("hamlet").id,
"sender_email": self.example_email("hamlet"), "sender_email": self.example_email("hamlet"),
"sender_full_name": "King Hamlet", "sender_full_name": "King Hamlet",
"sender_avatar_url": apn.absolute_avatar_url(message.sender), "sender_avatar_url": apn.absolute_avatar_url(message.sender),
@@ -817,6 +826,9 @@ class TestGetGCMPayload(PushNotificationTest):
"time": apn.datetime_to_timestamp(message.pub_date), "time": apn.datetime_to_timestamp(message.pub_date),
"content": "***REDACTED***", "content": "***REDACTED***",
"content_truncated": False, "content_truncated": False,
"server": settings.EXTERNAL_HOST,
"realm_id": self.example_user("hamlet").realm.id,
"sender_id": self.example_user("hamlet").id,
"sender_email": self.example_email("hamlet"), "sender_email": self.example_email("hamlet"),
"sender_full_name": "King Hamlet", "sender_full_name": "King Hamlet",
"sender_avatar_url": apn.absolute_avatar_url(message.sender), "sender_avatar_url": apn.absolute_avatar_url(message.sender),