From ce6b5cf06824918d27a361d82de85080e19bd209 Mon Sep 17 00:00:00 2001 From: Prakhar Pratyush Date: Thu, 19 Dec 2024 10:07:14 +0530 Subject: [PATCH] message_edit: Fix recipient of event due to 'do_update_embedded_data'. This commit updates the 'do_update_embedded_data' function to use the generic 'event_recipient_ids_for_action_on_messages' function while deciding the event's recipients. It helps to add hardening such that if the invariant "no usermessage row corresponding to a message exists if the user loses access to the message" is violated due to some bug, it has minimal user impact. --- zerver/actions/message_edit.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/zerver/actions/message_edit.py b/zerver/actions/message_edit.py index cb106ff578..839cd4d669 100644 --- a/zerver/actions/message_edit.py +++ b/zerver/actions/message_edit.py @@ -38,6 +38,7 @@ from zerver.lib.message import ( access_message, bulk_access_stream_messages_query, check_user_group_mention_allowed, + event_recipient_ids_for_action_on_messages, normalize_body, stream_wildcard_mention_allowed, topic_wildcard_mention_allowed, @@ -397,13 +398,16 @@ def do_update_embedded_data( "rendering_only": True, } + users_to_notify = event_recipient_ids_for_action_on_messages([message]) + filtered_ums = [um for um in ums if um.user_profile_id in users_to_notify] + def user_info(um: UserMessage) -> dict[str, Any]: return { "id": um.user_profile_id, "flags": um.flags_list(), } - send_event_on_commit(user_profile.realm, event, list(map(user_info, ums))) + send_event_on_commit(user_profile.realm, event, list(map(user_info, filtered_ums))) def get_visibility_policy_after_merge(