message_events_util: Convert module to TypeScript.

This commit is contained in:
Varun Singh 2024-07-31 19:15:48 +05:30 committed by Tim Abbott
parent 95a20e29b6
commit 8570cd81b1
3 changed files with 30 additions and 9 deletions

View File

@ -119,6 +119,7 @@ js_rules = RuleList(
"web/src/message_store.ts",
"web/src/types.ts",
"web/src/util.ts",
"web/src/message_events_util.ts",
"web/src/message_helper.ts",
"web/src/server_message.ts",
"web/tests/",

View File

@ -137,7 +137,7 @@ EXEMPT_FILES = make_set(
"web/src/message_edit.js",
"web/src/message_edit_history.ts",
"web/src/message_events.js",
"web/src/message_events_util.js",
"web/src/message_events_util.ts",
"web/src/message_feed_loading.ts",
"web/src/message_feed_top_notices.ts",
"web/src/message_fetch.js",

View File

@ -1,39 +1,59 @@
import {z} from "zod";
import * as blueslip from "./blueslip";
import * as channel from "./channel";
import * as compose_notifications from "./compose_notifications";
import * as message_lists from "./message_lists";
import type {MessageList, RenderInfo} from "./message_lists";
import * as message_store from "./message_store";
import type {Message} from "./message_store";
import * as narrow_state from "./narrow_state";
import * as unread_ops from "./unread_ops";
import * as util from "./util";
// TODO: Move this function to 'message_util.ts' once #30702 is merged.
export function maybe_add_narrowed_messages(messages, msg_list, callback, attempt = 1) {
const ids = [];
const msg_match_narrow_api_response_schema = z.object({
messages: z.record(
z.string(),
z.object({
match_content: z.string(),
match_subject: z.string(),
}),
),
});
export function maybe_add_narrowed_messages(
messages: Message[],
msg_list: MessageList,
callback: (messages: Message[], msg_list: MessageList) => RenderInfo | undefined,
attempt = 1,
): void {
const ids: number[] = [];
for (const elem of messages) {
ids.push(elem.id);
}
channel.get({
void channel.get({
url: "/json/messages/matches_narrow",
data: {
msg_ids: JSON.stringify(ids),
narrow: JSON.stringify(narrow_state.public_search_terms()),
},
timeout: 5000,
success(data) {
success(raw_data) {
const data = msg_match_narrow_api_response_schema.parse(raw_data);
if (!narrow_state.is_message_feed_visible() || msg_list !== message_lists.current) {
// We unnarrowed or moved to Recent Conversations in the meantime.
return;
}
let new_messages = [];
const elsewhere_messages = [];
let new_messages: Message[] = [];
const elsewhere_messages: Message[] = [];
for (const elem of messages) {
if (Object.hasOwn(data.messages, elem.id)) {
util.set_match_data(elem, data.messages[elem.id]);
util.set_match_data(elem, data.messages[elem.id]!);
new_messages.push(elem);
} else {
elsewhere_messages.push(elem);