zulip/zerver/actions
Sahil Batra aeb9a27d0e message: Ignore messages in unsubcribed streams when marking them unread.
Zulip's unread messages design has an invariant that all unread stream
messages must be in streams the user is subscribed to. For example, We
do not include the unread messages from unsubscribed streams in the
"unread_msgs" data structure in "/register" response and we mark all
unread messages as read when unsubscribing a user from a stream.

Previously, the mark as unread endpoint allowed violating that
invariant, allowing you to mark messages in any stream as unread.

Doing so caused the "message_details" data structures sent with
"update_message_flags" events to not contain messages from
unsubscribed streams, even though those messages were present in the
set of message IDs. These malformed events, in turn, caused exceptions
in the frontend's processing of such an event.

This change is paired with a separate UI change to not offer the "Mark
as unread" feature in such streams; with just this commit, that will
silently fail.

With some additions to the tests by tabbott.
2022-11-02 14:49:23 -07:00
..
__init__.py
alert_words.py actions: Split out zerver.actions.alert_words. 2022-04-14 17:14:31 -07:00
bots.py bots: Allow changing bot owner without an acting_user. 2022-08-12 17:08:04 -07:00
create_realm.py read_receipts: Add support for displaying read receipts. 2022-08-12 13:16:35 -07:00
create_user.py user_groups: Add FULL_MEMBERS_GROUP_NAME constant. 2022-08-11 04:38:36 -07:00
custom_profile_fields.py markdown: Pass realm down into render_stream_description. 2022-11-01 08:20:47 -07:00
default_streams.py typing: Broaden type annotations for QuerySet compatibility. 2022-07-07 11:27:42 -07:00
hotspots.py actions: Split out zerver.actions.hotspots. 2022-04-14 17:14:31 -07:00
invites.py invites: Delete ScheduledEmails in revoke invites transactions. 2022-10-31 15:06:42 -07:00
message_delete.py actions: Create a separate message_delete.py file. 2022-09-01 14:18:38 -07:00
message_edit.py message_edit: Support sending notifications with topic changes. 2022-10-11 11:35:41 -07:00
message_flags.py message: Ignore messages in unsubcribed streams when marking them unread. 2022-11-02 14:49:23 -07:00
message_send.py internal_send_private_message: Fix edge case of message to system bot. 2022-10-31 10:23:57 -07:00
muted_users.py actions: Split out zerver.actions.muted_users. 2022-04-14 17:14:36 -07:00
presence.py user-status: Move `do_update_user_status` to separate actions file. 2022-09-23 12:27:54 -07:00
reactions.py actions: Split out zerver.actions.reactions. 2022-04-14 17:14:35 -07:00
realm_domains.py realm_domains: Type QuerySet.values as RealmDomainDict. 2022-07-07 11:27:42 -07:00
realm_emoji.py requirements: Upgrade Django to 4.1. 2022-10-06 15:59:07 -07:00
realm_export.py actions: Split out zerver.actions.realm_export. 2022-04-14 17:14:31 -07:00
realm_icon.py realm_audit_log: Explicitly stringify dict before insertion. 2022-07-26 09:48:33 -07:00
realm_linkifiers.py actions: Use transaction.atomic for do_remove_linkifier. 2022-07-31 18:32:28 -07:00
realm_logo.py actions: Split out zerver.actions.realm_logo. 2022-04-14 17:14:31 -07:00
realm_playgrounds.py actions: Split out zerver.actions.realm_playgrounds. 2022-04-14 17:14:30 -07:00
realm_settings.py message_edit: Send only changed settings in event data and api response. 2022-09-28 11:47:40 -07:00
streams.py markdown: Pass realm down into render_stream_description. 2022-11-01 08:20:47 -07:00
submessage.py actions: Split out zerver.actions.submessage. 2022-04-14 17:14:30 -07:00
typing.py actions: Split out zerver.actions.typing. 2022-04-14 17:14:30 -07:00
uploads.py uploads: Avoid redefinition of a variable. 2022-07-26 18:00:24 -07:00
user_activity.py actions: Split out zerver.actions.user_activity. 2022-04-14 17:14:32 -07:00
user_groups.py user_groups: Add MEMBERS_GROUP_NAME constant. 2022-08-11 04:38:36 -07:00
user_settings.py typing: Broaden parameter type for bulk_regenerate_api_keys. 2022-08-29 11:06:41 -07:00
user_status.py user-status: Stop updating the UserStatus model for `away` updates. 2022-09-23 12:27:54 -07:00
user_topics.py muted_topics: Clean up unmute topic event code duplication. 2022-08-04 17:44:00 -07:00
users.py do_deactivate_user: Use .on_commit around send_event calls. 2022-10-11 10:49:07 -07:00
video_calls.py