message_lists: Add a function to return rendered message_lists.

This function returns home message_list and the current narrowed
message_list if it is different than home.
This commit is contained in:
Aman Agrawal
2022-08-17 05:10:19 +00:00
committed by Tim Abbott
parent 9a282ff9ad
commit b8661b6633
11 changed files with 51 additions and 53 deletions

View File

@@ -85,6 +85,7 @@ const electron_bridge = set_global("electron_bridge", {});
message_lists.current = {};
message_lists.home = {};
message_lists.all_rendered_message_lists = () => [message_lists.home, message_lists.current];
// page_params is highly coupled to dispatching now

View File

@@ -33,9 +33,22 @@ const message_store = mock_esm("../../static/js/message_store", {
set_message_booleans: () => {},
});
mock_esm("../../static/js/message_list");
message_lists.current = "";
message_lists.home = {view: {}};
const noop = () => {};
message_lists.current = {
view: {
rerender_messages: noop,
change_message_id: noop,
},
change_message_id: noop,
};
message_lists.home = {
view: {
rerender_messages: noop,
change_message_id: noop,
},
change_message_id: noop,
};
message_lists.all_rendered_message_lists = () => [message_lists.home, message_lists.current];
const drafts = zrequire("drafts");
const echo = zrequire("echo");

View File

@@ -50,7 +50,6 @@ const {run_test} = require("../zjsunit/test");
*/
const channel = mock_esm("../../static/js/channel");
const message_list = mock_esm("../../static/js/message_list");
const message_lists = mock_esm("../../static/js/message_lists");
const message_viewport = mock_esm("../../static/js/message_viewport");
const notifications = mock_esm("../../static/js/notifications");
@@ -58,6 +57,7 @@ const unread_ui = mock_esm("../../static/js/unread_ui");
message_lists.current = {};
message_lists.home = {};
message_lists.all_rendered_message_lists = () => [message_lists.home, message_lists.current];
const message_store = zrequire("message_store");
const recent_topics_util = zrequire("recent_topics_util");
@@ -102,13 +102,11 @@ run_test("unread_ops", ({override}) => {
// Make our "test" message appear visible.
override(message_viewport, "bottom_message_visible", () => true);
// Make us not be in a narrow (somewhat hackily).
message_list.narrowed = undefined;
// Set message_lists.current containing messages that can be marked read
override(message_lists.current, "all_messages", () => test_messages);
// Ignore these interactions for now:
override(message_lists.current, "show_message_as_read", () => {});
override(message_lists.home, "show_message_as_read", () => {});
override(notifications, "close_notification", () => {});
override(unread_ui, "update_unread_counts", () => {});

View File

@@ -9,13 +9,13 @@ const {page_params} = require("../zjsunit/zpage_params");
const condense = mock_esm("../../static/js/condense");
const message_edit = mock_esm("../../static/js/message_edit");
const message_list = mock_esm("../../static/js/message_list");
const message_lists = mock_esm("../../static/js/message_lists");
const notifications = mock_esm("../../static/js/notifications");
const pm_list = mock_esm("../../static/js/pm_list");
const stream_list = mock_esm("../../static/js/stream_list");
const unread_ui = mock_esm("../../static/js/unread_ui");
message_lists.current = {};
message_lists.all_rendered_message_lists = () => [message_lists.home, message_lists.current];
const people = zrequire("people");
const message_events = zrequire("message_events");
@@ -96,6 +96,7 @@ run_test("update_messages", () => {
rendered_mgs = msgs_to_rerender;
assert.equal(message_content_edited, true);
};
message_lists.home = message_lists.current;
const side_effects = [
[condense, "un_cache_message_content_height"],
@@ -109,7 +110,6 @@ run_test("update_messages", () => {
const helper = test_helper(side_effects);
page_params.realm_allow_edit_history = false;
message_list.narrowed = "stub-to-ignore";
const $message_edit_history_modal = $.create("#message-edit-history");
const $modal = $.create("micromodal").addClass("modal--open");

View File

@@ -9,7 +9,6 @@ import * as drafts from "./drafts";
import * as local_message from "./local_message";
import * as markdown from "./markdown";
import * as message_events from "./message_events";
import * as message_list from "./message_list";
import * as message_lists from "./message_lists";
import * as message_store from "./message_store";
import * as narrow_state from "./narrow_state";
@@ -327,10 +326,8 @@ export function edit_locally(message, request) {
// We don't have logic to adjust unread counts, because message
// reaching this code path must either have been sent by us or the
// topic isn't being edited, so unread counts can't have changed.
message_lists.home.view.rerender_messages([message]);
if (message_lists.current === message_list.narrowed) {
message_list.narrowed.view.rerender_messages([message]);
for (const msg_list of message_lists.all_rendered_message_lists()) {
msg_list.view.rerender_messages([message]);
}
stream_list.update_streams_sidebar();
pm_list.update_private_messages();
@@ -367,13 +364,11 @@ export function update_message_lists({old_id, new_id}) {
if (all_messages_data !== undefined) {
all_messages_data.change_message_id(old_id, new_id);
}
for (const msg_list of [message_lists.home, message_list.narrowed]) {
if (msg_list !== undefined) {
msg_list.change_message_id(old_id, new_id);
for (const msg_list of message_lists.all_rendered_message_lists()) {
msg_list.change_message_id(old_id, new_id);
if (msg_list.view !== undefined) {
msg_list.view.change_message_id(old_id, new_id);
}
if (msg_list.view !== undefined) {
msg_list.view.change_message_id(old_id, new_id);
}
}
}
@@ -434,9 +429,8 @@ export function process_from_server(messages) {
// changes in either the rounded timestamp we display or the
// message content, but in practice, there's no harm to just
// doing it unconditionally.
message_lists.home.view.rerender_messages(msgs_to_rerender);
if (message_lists.current === message_list.narrowed) {
message_list.narrowed.view.rerender_messages(msgs_to_rerender);
for (const msg_list of message_lists.all_rendered_message_lists()) {
msg_list.view.rerender_messages(msgs_to_rerender);
}
}

View File

@@ -506,9 +506,8 @@ export function update_messages(events) {
// edited. We should replace any_message_content_edited with
// passing two sets to rerender_messages; the set of all that
// are changed, and the set with content changes.
message_lists.current.view.rerender_messages(msgs_to_rerender, any_message_content_edited);
if (message_lists.current === message_list.narrowed) {
message_lists.home.view.rerender_messages(msgs_to_rerender);
for (const list of message_lists.all_rendered_message_lists()) {
list.view.rerender_messages(msgs_to_rerender, any_message_content_edited);
}
}
@@ -525,10 +524,7 @@ export function update_messages(events) {
export function remove_messages(message_ids) {
all_messages_data.remove(message_ids);
for (const list of [message_lists.home, message_list.narrowed]) {
if (list === undefined) {
continue;
}
for (const list of message_lists.all_rendered_message_lists()) {
list.remove_and_rerender(message_ids);
}
recent_senders.update_topics_of_deleted_message_ids(message_ids);

View File

@@ -8,6 +8,14 @@ export function set_current(msg_list) {
current = msg_list;
}
export function all_rendered_message_lists() {
const rendered_message_lists = [home];
if (current !== home) {
rendered_message_lists.push(current);
}
return rendered_message_lists;
}
export function initialize() {
home = new message_list.MessageList({
table_name: "zhome",

View File

@@ -1,13 +1,9 @@
import * as message_list from "./message_list";
import * as message_lists from "./message_lists";
import * as message_store from "./message_store";
import * as people from "./people";
export function rerender_messages_view() {
for (const list of [message_lists.home, message_list.narrowed]) {
if (list === undefined) {
continue;
}
for (const list of message_lists.all_rendered_message_lists()) {
if (list.table_name !== undefined) {
list.rerender_view();
}
@@ -15,8 +11,8 @@ export function rerender_messages_view() {
}
function rerender_messages_view_for_user(user_id) {
for (const list of [message_lists.home, message_list.narrowed]) {
if (list?.table_name === undefined) {
for (const list of message_lists.all_rendered_message_lists()) {
if (list.table_name === undefined) {
continue;
}
const messages = list.data.get_messages_sent_by_user(user_id);

View File

@@ -21,7 +21,6 @@ import * as linkifiers from "./linkifiers";
import * as message_edit from "./message_edit";
import * as message_events from "./message_events";
import * as message_flags from "./message_flags";
import * as message_list from "./message_list";
import * as message_lists from "./message_lists";
import * as message_live_update from "./message_live_update";
import * as muted_topics_ui from "./muted_topics_ui";
@@ -642,9 +641,8 @@ export function dispatch_normal_event(event) {
}
if (event.property === "twenty_four_hour_time") {
// Rerender the whole message list UI
message_lists.home.rerender();
if (message_lists.current === message_list.narrowed) {
message_list.narrowed.rerender();
for (const msg_list of message_lists.all_rendered_message_lists()) {
msg_list.rerender();
}
}
if (event.property === "high_contrast_mode") {
@@ -695,9 +693,8 @@ export function dispatch_normal_event(event) {
settings_display.report_emojiset_change(settings_display.user_settings_panel);
// Rerender the whole message list UI
message_lists.home.rerender();
if (message_lists.current === message_list.narrowed) {
message_list.narrowed.rerender();
for (const msg_list of message_lists.all_rendered_message_lists()) {
msg_list.rerender();
}
// Rerender buddy list status emoji
activity.build_user_sidebar();

View File

@@ -2,7 +2,6 @@ import $ from "jquery";
import SimpleBar from "simplebar";
import {$t} from "./i18n";
import * as message_list from "./message_list";
import * as message_lists from "./message_lists";
// What, if anything, obscures the home tab?
@@ -49,11 +48,8 @@ export function reset_scrollbar($element) {
}
function update_message_in_all_views(message_id, callback) {
for (const list of [message_lists.home, message_list.narrowed]) {
if (list === undefined) {
continue;
}
const $row = list.get_row(message_id);
for (const msg_list of message_lists.all_rendered_message_lists()) {
const $row = msg_list.get_row(message_id);
if ($row === undefined) {
// The row may not exist, e.g. if you do an action on a message in
// a narrowed view

View File

@@ -33,9 +33,8 @@ export function mark_all_as_read() {
}
function process_newly_read_message(message, options) {
message_lists.home.show_message_as_read(message, options);
if (message_list.narrowed) {
message_list.narrowed.show_message_as_read(message, options);
for (const msg_list of message_lists.all_rendered_message_lists()) {
msg_list.show_message_as_read(message, options);
}
notifications.close_notification(message);
recent_topics_ui.update_topic_unread_count(message);