typing: Add support for empty topic name.

This commit is contained in:
Prakhar Pratyush 2024-11-14 22:08:12 +05:30
parent 54499fc6e2
commit 95742c8f03
2 changed files with 16 additions and 0 deletions

View File

@ -1618,6 +1618,18 @@ def process_user_topic_event(event: Mapping[str, Any], users: Iterable[int]) ->
client.add_event(event)
def process_stream_typing_notification_event(event: Mapping[str, Any], users: Iterable[int]) -> None:
for user_profile_id in users:
for client in get_client_descriptors_for_user(user_profile_id):
if not client.accepts_event(event):
continue
if event.get("topic") == "" and not client.empty_topic_name:
event["topic"] = "general chat"
client.add_event(event)
def process_notification(notice: Mapping[str, Any]) -> None:
event: Mapping[str, Any] = notice["event"]
users: list[int] | list[Mapping[str, Any]] = notice["users"]
@ -1648,6 +1660,8 @@ def process_notification(notice: Mapping[str, Any]) -> None:
process_user_group_name_update_event(event, cast(list[int], users))
elif event["type"] == "user_topic":
process_user_topic_event(event, cast(list[int], users))
elif event["type"] == "typing" and event["message_type"] == "stream":
process_stream_typing_notification_event(event, cast(list[int], users))
elif event["type"] == "cleanup_queue":
# cleanup_event_queue may generate this event to forward cleanup
# requests to the right shard.

View File

@ -8,6 +8,7 @@ from zerver.actions.typing import check_send_typing_notification, do_send_stream
from zerver.lib.exceptions import JsonableError
from zerver.lib.response import json_success
from zerver.lib.streams import access_stream_by_id, access_stream_for_send_message
from zerver.lib.topic import maybe_rename_general_chat_to_empty_topic
from zerver.lib.typed_endpoint import ApiParamConfig, OptionalTopic, typed_endpoint
from zerver.models import UserProfile
@ -44,6 +45,7 @@ def send_notification_backend(
# permission to send messages to it.
stream = access_stream_by_id(user_profile, stream_id)[0]
access_stream_for_send_message(user_profile, stream, forwarder_user_profile=None)
topic = maybe_rename_general_chat_to_empty_topic(topic)
do_send_stream_typing_notification(user_profile, operator, stream, topic)
else:
if notification_to is None: