message lists: Don't allow user/topic mute message filtering independently.

This basically reverts 4bd7ec7c36 and
3a9dfc02e6.

The plan earlier was to have compeletely different codepaths
for user and topic muting, so that we could call seperate
functions in the message list class on receiving the respective
events.

However, this cannot be done, because if we, for example, on
receiving a `muted_users` event, filter `_all_items` based on
just user mutes, and store the result in `_items`, then, that
result may still contain topic-muted messages, which is
undesirable. Hence whenever we filter messages, we must do so
based on both user as well as topic muting.
(The code for the former will be added in further commits.)

So, we will have a single function which will handle updating
the message lists for muting.
This commit is contained in:
Abhijeet Prasad Bodas
2021-05-08 01:43:03 +05:30
committed by Tim Abbott
parent 2fc87ec644
commit e64e5936ce
5 changed files with 9 additions and 9 deletions

View File

@@ -73,7 +73,7 @@ run_test("basics", () => {
mld.remove([50]);
assert_contents(mld, [10, 15, 20, 25, 30, 35, 40, 45, 60, 70]);
mld.update_items_for_topic_muting();
mld.update_items_for_muting();
assert_contents(mld, [10, 15, 20, 25, 30, 35, 40, 45, 60, 70]);
mld.reset_select_to_closest();

View File

@@ -411,18 +411,18 @@ export function update_messages(events) {
// propagated edits to be updated (since the topic edits can have
// changed the correct grouping of messages).
if (topic_edited || stream_changed) {
message_lists.home.update_topic_muting_and_rerender();
message_lists.home.update_muting_and_rerender();
// However, we don't need to rerender message_list.narrowed if
// we just changed the narrow earlier in this function.
//
// TODO: We can potentially optimize this logic to avoid
// calling `update_topic_muting_and_rerender` if the muted
// calling `update_muting_and_rerender` if the muted
// messages would not match the view before or after this
// edit. Doing so could save significant work, since most
// topic edits will not match the current topic narrow in
// large organizations.
if (!changed_narrow && message_lists.current === message_list.narrowed) {
message_list.narrowed.update_topic_muting_and_rerender();
message_list.narrowed.update_muting_and_rerender();
}
} else {
// If the content of the message was edited, we do a special animation.

View File

@@ -383,8 +383,8 @@ export class MessageList {
}
}
update_topic_muting_and_rerender() {
this.data.update_items_for_topic_muting();
update_muting_and_rerender() {
this.data.update_items_for_muting();
// We need to rerender whether or not the narrow hides muted
// topics, because we need to update recipient bars for topics
// we've muted when we are displaying those topics.

View File

@@ -186,7 +186,7 @@ export class MessageListData {
return this.messages_filtered_for_topic_mutes(messages);
}
update_items_for_topic_muting() {
update_items_for_muting() {
if (!this.excludes_muted_topics) {
return;
}

View File

@@ -25,9 +25,9 @@ import * as unread_ui from "./unread_ui";
export function rerender_for_muted_topic(old_muted_topics) {
stream_list.update_streams_sidebar();
message_lists.current.update_topic_muting_and_rerender();
message_lists.current.update_muting_and_rerender();
if (message_lists.current !== message_lists.home) {
message_lists.home.update_topic_muting_and_rerender();
message_lists.home.update_muting_and_rerender();
}
if (overlays.settings_open() && settings_muted_topics.loaded) {
settings_muted_topics.populate_list();