push_notifications: Show EMPTY_TOPIC_FALLBACK_NAME for topic="".

This commit adds support to display `Message.EMPTY_TOPIC_FALLBACK_NAME`
value (translated) in the push notifications for topics having the
actual value of empty string.

Fixes part of #32996.
This commit is contained in:
Prakhar Pratyush
2025-02-05 13:04:03 +05:30
committed by Tim Abbott
parent d3b601ef3b
commit 23f16885d5
2 changed files with 34 additions and 8 deletions

View File

@@ -47,6 +47,7 @@ from zerver.lib.remote_server import (
from zerver.lib.soft_deactivation import soft_reactivate_if_personal_notification
from zerver.lib.tex import change_katex_to_raw_latex
from zerver.lib.timestamp import datetime_to_timestamp
from zerver.lib.topic import get_topic_display_name
from zerver.lib.url_decoding import is_same_server_message_link
from zerver.lib.users import check_can_access_user
from zerver.models import (
@@ -992,7 +993,7 @@ def get_message_payload(
data["recipient_type"] = "stream"
data["stream"] = get_message_stream_name_from_database(message)
data["stream_id"] = message.recipient.type_id
data["topic"] = message.topic_name()
data["topic"] = get_topic_display_name(message.topic_name(), user_profile.default_language)
elif message.recipient.type == Recipient.DIRECT_MESSAGE_GROUP:
data["recipient_type"] = "private"
data["pm_users"] = direct_message_group_users(message.recipient.id)
@@ -1002,7 +1003,7 @@ def get_message_payload(
return data
def get_apns_alert_title(message: Message) -> str:
def get_apns_alert_title(message: Message, language: str) -> str:
"""
On an iOS notification, this is the first bolded line.
"""
@@ -1012,7 +1013,8 @@ def get_apns_alert_title(message: Message) -> str:
return ", ".join(sorted(r["full_name"] for r in recipients))
elif message.is_stream_message():
stream_name = get_message_stream_name_from_database(message)
return f"#{stream_name} > {message.topic_name()}"
topic_display_name = get_topic_display_name(message.topic_name(), language)
return f"#{stream_name} > {topic_display_name}"
# For 1:1 direct messages, we just show the sender name.
return message.sender.full_name
@@ -1105,7 +1107,7 @@ def get_message_payload_apns(
content, _ = truncate_content(get_mobile_push_content(message.rendered_content))
apns_data = {
"alert": {
"title": get_apns_alert_title(message),
"title": get_apns_alert_title(message, user_profile.default_language),
"subtitle": get_apns_alert_subtitle(
message, trigger, user_profile, mentioned_user_group_name, can_access_sender
),