message_edit: Fix "(deleted)" not showing for empty edited DMs.

This commit fixes a bug introduced in commit `37f2c5bc788`,
where a message in DM is not updated to "(deleted)" when
left empty after editing.

Fixes: #33305
This commit is contained in:
whilstsomebody
2025-02-03 19:47:11 +05:30
committed by Tim Abbott
parent 21412b9f79
commit 8a64940868
2 changed files with 24 additions and 10 deletions

View File

@@ -1262,16 +1262,6 @@ def build_message_edit_request(
topic_name: str | None = None, topic_name: str | None = None,
content: str | None = None, content: str | None = None,
) -> StreamMessageEditRequest | DirectMessageEditRequest: ) -> StreamMessageEditRequest | DirectMessageEditRequest:
if not message.is_stream_message():
# We have already validated the code to have content
# as not None.
assert content is not None
return DirectMessageEditRequest(
content=content,
orig_content=message.content,
is_content_edited=True,
)
is_content_edited = False is_content_edited = False
new_content = message.content new_content = message.content
if content is not None: if content is not None:
@@ -1280,6 +1270,15 @@ def build_message_edit_request(
content = "(deleted)" content = "(deleted)"
new_content = normalize_body(content) new_content = normalize_body(content)
if not message.is_stream_message():
# We have already validated that at least one of content, topic, or stream
# must be modified, and for DMs, only the content can be edited.
return DirectMessageEditRequest(
content=new_content,
orig_content=message.content,
is_content_edited=True,
)
is_topic_edited = False is_topic_edited = False
topic_resolved = False topic_resolved = False
topic_unresolved = False topic_unresolved = False

View File

@@ -396,6 +396,7 @@ class EditMessageTest(ZulipTestCase):
def test_edit_message_no_content(self) -> None: def test_edit_message_no_content(self) -> None:
self.login("hamlet") self.login("hamlet")
# Check message edit in stream for no content.
msg_id = self.send_stream_message( msg_id = self.send_stream_message(
self.example_user("hamlet"), "Denmark", topic_name="editing", content="before edit" self.example_user("hamlet"), "Denmark", topic_name="editing", content="before edit"
) )
@@ -409,6 +410,20 @@ class EditMessageTest(ZulipTestCase):
content = Message.objects.filter(id=msg_id).values_list("content", flat=True)[0] content = Message.objects.filter(id=msg_id).values_list("content", flat=True)[0]
self.assertEqual(content, "(deleted)") self.assertEqual(content, "(deleted)")
# Check message edit in DMs for no content.
msg_id = self.send_personal_message(
from_user=self.example_user("hamlet"), to_user=self.example_user("cordelia")
)
result = self.client_patch(
f"/json/messages/{msg_id}",
{
"content": " ",
},
)
self.assert_json_success(result)
content = Message.objects.filter(id=msg_id).values_list("content", flat=True)[0]
self.assertEqual(content, "(deleted)")
def test_edit_message_in_unsubscribed_private_stream(self) -> None: def test_edit_message_in_unsubscribed_private_stream(self) -> None:
hamlet = self.example_user("hamlet") hamlet = self.example_user("hamlet")
self.login("hamlet") self.login("hamlet")