mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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", () => {});
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user