mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
message_send: Fix stream still inactive after sending message.
We updated the stream property but forgot to inform the client.
This commit is contained in:
@@ -99,7 +99,12 @@ from zerver.models.groups import SystemGroups
|
||||
from zerver.models.recipients import get_direct_message_group_user_ids
|
||||
from zerver.models.scheduled_jobs import NotificationTriggers
|
||||
from zerver.models.streams import get_stream, get_stream_by_id_in_realm
|
||||
from zerver.models.users import get_system_bot, get_user_by_delivery_email, is_cross_realm_bot_email
|
||||
from zerver.models.users import (
|
||||
active_user_ids,
|
||||
get_system_bot,
|
||||
get_user_by_delivery_email,
|
||||
is_cross_realm_bot_email,
|
||||
)
|
||||
from zerver.tornado.django_api import send_event_on_commit
|
||||
|
||||
|
||||
@@ -1170,6 +1175,18 @@ def do_send_messages(
|
||||
if not send_request.stream.is_recently_active:
|
||||
send_request.stream.is_recently_active = True
|
||||
stream_update_fields.append("is_recently_active")
|
||||
stream_update_event = dict(
|
||||
type="stream",
|
||||
op="update",
|
||||
property="is_recently_active",
|
||||
value=True,
|
||||
stream_id=send_request.stream.id,
|
||||
name=send_request.stream.name,
|
||||
)
|
||||
send_event_on_commit(
|
||||
send_request.realm, stream_update_event, active_user_ids(send_request.realm.id)
|
||||
)
|
||||
|
||||
if len(stream_update_fields) > 0:
|
||||
send_request.stream.save(update_fields=stream_update_fields)
|
||||
|
||||
|
@@ -2403,7 +2403,20 @@ class StreamMessagesTest(ZulipTestCase):
|
||||
# Send a message to the stream
|
||||
sender = self.example_user("hamlet")
|
||||
self.subscribe(sender, stream.name)
|
||||
self.send_stream_message(sender, stream.name)
|
||||
# One message send event and one stream property update event.
|
||||
with self.capture_send_event_calls(expected_num_events=2) as events:
|
||||
self.send_stream_message(sender, stream.name, skip_capture_on_commit_callbacks=True)
|
||||
|
||||
has_stream_update_event = False
|
||||
for event in events:
|
||||
if event["event"]["type"] == "stream":
|
||||
stream_update_event = event["event"]
|
||||
has_stream_update_event = True
|
||||
self.assertEqual(stream_update_event["op"], "update")
|
||||
self.assertEqual(stream_update_event["property"], "is_recently_active")
|
||||
self.assertEqual(stream_update_event["value"], True)
|
||||
self.assertTrue(has_stream_update_event)
|
||||
|
||||
# The stream should now be active
|
||||
stream.refresh_from_db()
|
||||
self.assertEqual(stream.is_recently_active, True)
|
||||
|
Reference in New Issue
Block a user