mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
android push notifications: Display mentioned user group name.
Followup to 83399e2e72.
This commit is contained in:
committed by
Tim Abbott
parent
4d24499317
commit
9bd8fe01fc
@@ -549,7 +549,7 @@ def initialize_push_notifications() -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_gcm_alert(message: Message) -> str:
|
def get_gcm_alert(message: Message, mentioned_user_group_name: Optional[str] = None) -> str:
|
||||||
"""
|
"""
|
||||||
Determine what alert string to display based on the missed messages.
|
Determine what alert string to display based on the missed messages.
|
||||||
"""
|
"""
|
||||||
@@ -560,7 +560,10 @@ def get_gcm_alert(message: Message) -> str:
|
|||||||
elif message.recipient.type == Recipient.PERSONAL and message.trigger == "private_message":
|
elif message.recipient.type == Recipient.PERSONAL and message.trigger == "private_message":
|
||||||
return f"New private message from {sender_str}"
|
return f"New private message from {sender_str}"
|
||||||
elif message.is_stream_message() and message.trigger == "mentioned":
|
elif message.is_stream_message() and message.trigger == "mentioned":
|
||||||
|
if mentioned_user_group_name is None:
|
||||||
return f"{sender_str} mentioned you in #{display_recipient}"
|
return f"{sender_str} mentioned you in #{display_recipient}"
|
||||||
|
else:
|
||||||
|
return f"{sender_str} mentioned @{mentioned_user_group_name} in #{display_recipient}"
|
||||||
elif message.is_stream_message() and message.trigger == "wildcard_mentioned":
|
elif message.is_stream_message() and message.trigger == "wildcard_mentioned":
|
||||||
return f"{sender_str} mentioned everyone in #{display_recipient}"
|
return f"{sender_str} mentioned everyone in #{display_recipient}"
|
||||||
else:
|
else:
|
||||||
@@ -777,8 +780,7 @@ def get_message_payload_apns(
|
|||||||
|
|
||||||
|
|
||||||
def get_message_payload_gcm(
|
def get_message_payload_gcm(
|
||||||
user_profile: UserProfile,
|
user_profile: UserProfile, message: Message, mentioned_user_group_name: Optional[str] = None
|
||||||
message: Message,
|
|
||||||
) -> Tuple[Dict[str, Any], Dict[str, Any]]:
|
) -> Tuple[Dict[str, Any], Dict[str, Any]]:
|
||||||
"""A `message` payload + options, for Android via GCM/FCM."""
|
"""A `message` payload + options, for Android via GCM/FCM."""
|
||||||
data = get_message_payload(user_profile, message)
|
data = get_message_payload(user_profile, message)
|
||||||
@@ -787,7 +789,7 @@ def get_message_payload_gcm(
|
|||||||
content, truncated = truncate_content(get_mobile_push_content(message.rendered_content))
|
content, truncated = truncate_content(get_mobile_push_content(message.rendered_content))
|
||||||
data.update(
|
data.update(
|
||||||
event="message",
|
event="message",
|
||||||
alert=get_gcm_alert(message),
|
alert=get_gcm_alert(message, mentioned_user_group_name),
|
||||||
zulip_message_id=message.id, # message_id is reserved for CCS
|
zulip_message_id=message.id, # message_id is reserved for CCS
|
||||||
time=datetime_to_timestamp(message.date_sent),
|
time=datetime_to_timestamp(message.date_sent),
|
||||||
content=content,
|
content=content,
|
||||||
@@ -925,7 +927,9 @@ def handle_push_notification(user_profile_id: int, missed_message: Dict[str, Any
|
|||||||
mentioned_user_group_name = user_group.name
|
mentioned_user_group_name = user_group.name
|
||||||
|
|
||||||
apns_payload = get_message_payload_apns(user_profile, message, mentioned_user_group_name)
|
apns_payload = get_message_payload_apns(user_profile, message, mentioned_user_group_name)
|
||||||
gcm_payload, gcm_options = get_message_payload_gcm(user_profile, message)
|
gcm_payload, gcm_options = get_message_payload_gcm(
|
||||||
|
user_profile, message, mentioned_user_group_name
|
||||||
|
)
|
||||||
logger.info("Sending push notifications to mobile clients for user %s", user_profile_id)
|
logger.info("Sending push notifications to mobile clients for user %s", user_profile_id)
|
||||||
|
|
||||||
if uses_notification_bouncer():
|
if uses_notification_bouncer():
|
||||||
|
|||||||
@@ -1740,7 +1740,9 @@ class TestGetAPNsPayload(PushNotificationTest):
|
|||||||
|
|
||||||
|
|
||||||
class TestGetGCMPayload(PushNotificationTest):
|
class TestGetGCMPayload(PushNotificationTest):
|
||||||
def _test_get_message_payload_gcm_mentions(self, trigger: str, alert: str) -> None:
|
def _test_get_message_payload_gcm_mentions(
|
||||||
|
self, trigger: str, alert: str, mentioned_user_group_name: Optional[str] = None
|
||||||
|
) -> None:
|
||||||
stream = Stream.objects.filter(name="Verona").get()
|
stream = Stream.objects.filter(name="Verona").get()
|
||||||
message = self.get_message(Recipient.STREAM, stream.id)
|
message = self.get_message(Recipient.STREAM, stream.id)
|
||||||
message.content = "a" * 210
|
message.content = "a" * 210
|
||||||
@@ -1749,7 +1751,7 @@ class TestGetGCMPayload(PushNotificationTest):
|
|||||||
message.trigger = trigger
|
message.trigger = trigger
|
||||||
|
|
||||||
hamlet = self.example_user("hamlet")
|
hamlet = self.example_user("hamlet")
|
||||||
payload, gcm_options = get_message_payload_gcm(hamlet, message)
|
payload, gcm_options = get_message_payload_gcm(hamlet, message, mentioned_user_group_name)
|
||||||
self.assertDictEqual(
|
self.assertDictEqual(
|
||||||
payload,
|
payload,
|
||||||
{
|
{
|
||||||
@@ -1784,6 +1786,11 @@ class TestGetGCMPayload(PushNotificationTest):
|
|||||||
"mentioned", "King Hamlet mentioned you in #Verona"
|
"mentioned", "King Hamlet mentioned you in #Verona"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_get_message_payload_gcm_user_group_mention(self) -> None:
|
||||||
|
self._test_get_message_payload_gcm_mentions(
|
||||||
|
"mentioned", "King Hamlet mentioned @mobile_team in #Verona", "mobile_team"
|
||||||
|
)
|
||||||
|
|
||||||
def test_get_message_payload_gcm_wildcard_mention(self) -> None:
|
def test_get_message_payload_gcm_wildcard_mention(self) -> None:
|
||||||
self._test_get_message_payload_gcm_mentions(
|
self._test_get_message_payload_gcm_mentions(
|
||||||
"wildcard_mentioned", "King Hamlet mentioned everyone in #Verona"
|
"wildcard_mentioned", "King Hamlet mentioned everyone in #Verona"
|
||||||
|
|||||||
Reference in New Issue
Block a user