mirror of https://github.com/zulip/zulip.git
refactor: Extract echo.update_message_lists.
We lift the code out of message_store.reify_ids into its only calling module (echo.js).
This commit is contained in:
parent
6bad6c8837
commit
415e6a486f
|
@ -5,6 +5,7 @@ const {strict: assert} = require("assert");
|
|||
const MockDate = require("mockdate");
|
||||
|
||||
const {mock_esm, set_global, zrequire} = require("../zjsunit/namespace");
|
||||
const {make_stub} = require("../zjsunit/stub");
|
||||
const {run_test} = require("../zjsunit/test");
|
||||
const {page_params} = require("../zjsunit/zpage_params");
|
||||
|
||||
|
@ -169,6 +170,28 @@ run_test("build_display_recipient", () => {
|
|||
assert.equal(iago.id, 123);
|
||||
});
|
||||
|
||||
run_test("update_message_lists", () => {
|
||||
home_msg_list.view = {};
|
||||
|
||||
const stub = make_stub();
|
||||
const view_stub = make_stub();
|
||||
|
||||
home_msg_list.change_message_id = stub.f;
|
||||
home_msg_list.view.change_message_id = view_stub.f;
|
||||
|
||||
echo.update_message_lists({old_id: 401, new_id: 402});
|
||||
|
||||
assert.equal(stub.num_calls, 1);
|
||||
const args = stub.get_args("old", "new");
|
||||
assert.equal(args.old, 401);
|
||||
assert.equal(args.new, 402);
|
||||
|
||||
assert.equal(view_stub.num_calls, 1);
|
||||
const view_args = view_stub.get_args("old", "new");
|
||||
assert.equal(view_args.old, 401);
|
||||
assert.equal(view_args.new, 402);
|
||||
});
|
||||
|
||||
run_test("insert_local_message streams", (override) => {
|
||||
const fake_now = 555;
|
||||
MockDate.set(new Date(fake_now * 1000));
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
const {strict: assert} = require("assert");
|
||||
|
||||
const {mock_esm, set_global, with_field, zrequire} = require("../zjsunit/namespace");
|
||||
const {make_stub} = require("../zjsunit/stub");
|
||||
const {run_test} = require("../zjsunit/test");
|
||||
const blueslip = require("../zjsunit/zblueslip");
|
||||
const {page_params} = require("../zjsunit/zpage_params");
|
||||
|
@ -19,7 +18,6 @@ mock_esm("../../static/js/recent_senders", {
|
|||
});
|
||||
|
||||
set_global("document", "document-stub");
|
||||
set_global("home_msg_list", {});
|
||||
page_params.realm_allow_message_editing = true;
|
||||
page_params.is_admin = true;
|
||||
|
||||
|
@ -238,6 +236,17 @@ test("errors", () => {
|
|||
);
|
||||
});
|
||||
|
||||
test("reify_message_id", () => {
|
||||
const message = {type: "private", id: 500};
|
||||
|
||||
message_store.update_message_cache(message);
|
||||
assert.equal(message_store.get_cached_message(500), message);
|
||||
|
||||
message_store.reify_message_id({old_id: 500, new_id: 501});
|
||||
assert.equal(message_store.get_cached_message(500), undefined);
|
||||
assert.equal(message_store.get_cached_message(501), message);
|
||||
});
|
||||
|
||||
test("update_booleans", () => {
|
||||
const message = {};
|
||||
|
||||
|
@ -324,44 +333,6 @@ test("update_property", () => {
|
|||
assert.equal(message2.display_recipient, denmark.name);
|
||||
});
|
||||
|
||||
test("message_id_change", () => {
|
||||
const message = {
|
||||
sender_email: "me@example.com",
|
||||
sender_id: me.user_id,
|
||||
type: "private",
|
||||
display_recipient: convert_recipients([me, bob, cindy]),
|
||||
flags: ["has_alert_word"],
|
||||
id: 401,
|
||||
};
|
||||
message_helper.process_new_message(message);
|
||||
|
||||
const opts = {
|
||||
old_id: 401,
|
||||
new_id: 402,
|
||||
};
|
||||
|
||||
{
|
||||
const stub = make_stub();
|
||||
home_msg_list.change_message_id = stub.f;
|
||||
message_store.reify_message_id(opts);
|
||||
assert.equal(stub.num_calls, 1);
|
||||
const msg_id = stub.get_args("old", "new");
|
||||
assert.equal(msg_id.old, 401);
|
||||
assert.equal(msg_id.new, 402);
|
||||
}
|
||||
|
||||
home_msg_list.view = {};
|
||||
{
|
||||
const stub = make_stub();
|
||||
home_msg_list.view.change_message_id = stub.f;
|
||||
message_store.reify_message_id(opts);
|
||||
assert.equal(stub.num_calls, 1);
|
||||
const msg_id = stub.get_args("old", "new");
|
||||
assert.equal(msg_id.old, 401);
|
||||
assert.equal(msg_id.new, 402);
|
||||
}
|
||||
});
|
||||
|
||||
test("errors", () => {
|
||||
blueslip.expect("error", "message_store.get got bad value: undefined");
|
||||
message_store.get(undefined);
|
||||
|
|
|
@ -307,10 +307,23 @@ export function reify_message_id(local_id, server_id) {
|
|||
const opts = {old_id: Number.parseFloat(local_id), new_id: server_id};
|
||||
|
||||
message_store.reify_message_id(opts);
|
||||
update_message_lists(opts);
|
||||
notifications.reify_message_id(opts);
|
||||
recent_topics.reify_message_id_if_available(opts);
|
||||
}
|
||||
|
||||
export function update_message_lists({old_id, new_id}) {
|
||||
for (const msg_list of [message_list.all, home_msg_list, message_list.narrowed]) {
|
||||
if (msg_list !== undefined) {
|
||||
msg_list.change_message_id(old_id, new_id);
|
||||
|
||||
if (msg_list.view !== undefined) {
|
||||
msg_list.view.change_message_id(old_id, new_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function process_from_server(messages) {
|
||||
const msgs_to_rerender = [];
|
||||
const non_echo_messages = [];
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import * as blueslip from "./blueslip";
|
||||
import * as message_list from "./message_list";
|
||||
import * as people from "./people";
|
||||
|
||||
const stored_messages = new Map();
|
||||
|
@ -137,21 +136,9 @@ export function update_property(property, value, info) {
|
|||
}
|
||||
}
|
||||
|
||||
export function reify_message_id(opts) {
|
||||
const old_id = opts.old_id;
|
||||
const new_id = opts.new_id;
|
||||
export function reify_message_id({old_id, new_id}) {
|
||||
if (stored_messages.has(old_id)) {
|
||||
stored_messages.set(new_id, stored_messages.get(old_id));
|
||||
stored_messages.delete(old_id);
|
||||
}
|
||||
|
||||
for (const msg_list of [message_list.all, home_msg_list, message_list.narrowed]) {
|
||||
if (msg_list !== undefined) {
|
||||
msg_list.change_message_id(old_id, new_id);
|
||||
|
||||
if (msg_list.view !== undefined) {
|
||||
msg_list.view.change_message_id(old_id, new_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue