message: Make sure submessages is always defined.

This commit is contained in:
Evy Kassirer
2025-09-08 17:36:32 -07:00
committed by Tim Abbott
parent d3ef72f1d6
commit 093ce93fa4
7 changed files with 9 additions and 13 deletions

View File

@@ -141,7 +141,7 @@ export function is_topic_editable(message: Message, edit_limit_seconds_buffer =
} }
function is_widget_message(message: Message): boolean { function is_widget_message(message: Message): boolean {
if (message.submessages && message.submessages.length > 0) { if (message.submessages.length > 0) {
return true; return true;
} }
return false; return false;

View File

@@ -94,6 +94,7 @@ export function process_new_message(raw_message: RawMessage, deliver_locally = f
clean_reactions, clean_reactions,
display_reply_to: undefined, display_reply_to: undefined,
}; };
message.submessages ??= [];
message_user_ids.add_user_id(message.sender_id); message_user_ids.add_user_id(message.sender_id);
} else { } else {
const pm_with_user_ids = people.pm_with_user_ids(message_with_booleans); const pm_with_user_ids = people.pm_with_user_ids(message_with_booleans);
@@ -114,6 +115,7 @@ export function process_new_message(raw_message: RawMessage, deliver_locally = f
to_user_ids, to_user_ids,
clean_reactions, clean_reactions,
}; };
message.submessages ??= [];
pm_conversations.process_message(message); pm_conversations.process_message(message);

View File

@@ -65,10 +65,6 @@ export function get_message_events(message: Message): SubmessageEvents | undefin
return undefined; return undefined;
} }
if (!message.submessages) {
return undefined;
}
if (message.submessages.length === 0) { if (message.submessages.length === 0) {
return undefined; return undefined;
} }
@@ -163,8 +159,6 @@ export function update_message(submsg: Submessage): void {
return; return;
} }
message.submessages ??= [];
const existing = message.submessages.find((sm) => sm.id === submsg.id); const existing = message.submessages.find((sm) => sm.id === submsg.id);
if (existing !== undefined) { if (existing !== undefined) {

View File

@@ -53,6 +53,7 @@ run_test("is_content_editable", ({override}) => {
// user, and that were successfully sent (i.e. no failed_request or local_id) // user, and that were successfully sent (i.e. no failed_request or local_id)
const message = { const message = {
sent_by_me: true, sent_by_me: true,
submessages: [],
}; };
override(realm, "realm_allow_message_editing", false); override(realm, "realm_allow_message_editing", false);
@@ -75,7 +76,7 @@ run_test("is_content_editable", ({override}) => {
// Right now, we prevent users from editing widgets. // Right now, we prevent users from editing widgets.
message.submessages = ["/poll"]; message.submessages = ["/poll"];
assert.equal(is_content_editable(message, 55), false); assert.equal(is_content_editable(message, 55), false);
delete message.submessages; message.submessages = [];
message.type = "private"; message.type = "private";
assert.equal(is_content_editable(message, 45), false); assert.equal(is_content_editable(message, 45), false);

View File

@@ -166,6 +166,7 @@ run_test("update_messages", ({override, override_rewire}) => {
status_emoji_info: undefined, status_emoji_info: undefined,
stream_id: denmark.stream_id, stream_id: denmark.stream_id,
stream: "Denmark", stream: "Denmark",
submessages: [],
topic: "lunch", topic: "lunch",
type: "stream", type: "stream",
unread: true, unread: true,

View File

@@ -203,6 +203,7 @@ test("my_message_all_actions", ({override}) => {
unread: false, unread: false,
collapsed: false, collapsed: false,
not_spectator: true, not_spectator: true,
submessages: [],
edit_history: [ edit_history: [
{ {
prev_content: "Previous content", prev_content: "Previous content",

View File

@@ -13,11 +13,7 @@ const widgetize = mock_esm("../src/widgetize");
const submessage = zrequire("submessage"); const submessage = zrequire("submessage");
run_test("get_message_events", () => { run_test("get_message_events", () => {
let msg = {}; let msg = {
assert.equal(submessage.get_message_events(msg), undefined);
msg = {
submessages: [], submessages: [],
}; };
assert.equal(submessage.get_message_events(msg), undefined); assert.equal(submessage.get_message_events(msg), undefined);
@@ -117,6 +113,7 @@ run_test("check sender", ({override}) => {
run_test("handle_event", () => { run_test("handle_event", () => {
const message = { const message = {
id: 42, id: 42,
submessages: [],
}; };
const event = { const event = {