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 {
if (message.submessages && message.submessages.length > 0) {
if (message.submessages.length > 0) {
return true;
}
return false;

View File

@@ -94,6 +94,7 @@ export function process_new_message(raw_message: RawMessage, deliver_locally = f
clean_reactions,
display_reply_to: undefined,
};
message.submessages ??= [];
message_user_ids.add_user_id(message.sender_id);
} else {
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,
clean_reactions,
};
message.submessages ??= [];
pm_conversations.process_message(message);

View File

@@ -65,10 +65,6 @@ export function get_message_events(message: Message): SubmessageEvents | undefin
return undefined;
}
if (!message.submessages) {
return undefined;
}
if (message.submessages.length === 0) {
return undefined;
}
@@ -163,8 +159,6 @@ export function update_message(submsg: Submessage): void {
return;
}
message.submessages ??= [];
const existing = message.submessages.find((sm) => sm.id === submsg.id);
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)
const message = {
sent_by_me: true,
submessages: [],
};
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.
message.submessages = ["/poll"];
assert.equal(is_content_editable(message, 55), false);
delete message.submessages;
message.submessages = [];
message.type = "private";
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,
stream_id: denmark.stream_id,
stream: "Denmark",
submessages: [],
topic: "lunch",
type: "stream",
unread: true,

View File

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

View File

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