message_store: Edit message content in a helper function.

In a future commit, this will be where we ensure the saved
topic links are up to date.
This commit is contained in:
Evy Kassirer
2025-10-15 21:22:44 -07:00
committed by Tim Abbott
parent 04244f7099
commit 1e78447c50
5 changed files with 16 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
import _ from "lodash";
import type {Message} from "./message_store.ts";
import * as message_store from "./message_store.ts";
import * as people from "./people.ts";
import type {StateData} from "./state_data.ts";
@@ -56,7 +57,7 @@ export function process_message(message: Message): void {
const after_punctuation = "(?=\\s)|$|<|[\\)\\\"\\?!:.,';\\]!]";
const regex = new RegExp(`(${before_punctuation})(${clean})(${after_punctuation})`, "ig");
message.content = message.content.replace(
const updated_content = message.content.replace(
regex,
(
match: string,
@@ -81,6 +82,7 @@ export function process_message(message: Message): void {
return before + "<span class='alert-word'>" + word + "</span>" + after;
},
);
message_store.update_message_content(message, updated_content);
}
}

View File

@@ -162,7 +162,7 @@ function resend_message(
send_message: typeof transmit.send_message;
},
): void {
message.content = message.raw_content!;
message_store.update_message_content(message, message.raw_content!);
if (show_retry_spinner($row)) {
// retry already in in progress
return;
@@ -401,7 +401,7 @@ export function edit_locally(message: Message, request: LocalEditRequest): Messa
// the saved content and flags rather than rendering; this
// is important in case
// markdown.contains_backend_only_syntax(message) is true.
message.content = request.content;
message_store.update_message_content(message, request.content);
message.mentioned = request.mentioned ?? false;
message.mentioned_me_directly = request.mentioned_me_directly ?? false;
message.alerted = request.alerted ?? false;
@@ -411,7 +411,7 @@ export function edit_locally(message: Message, request: LocalEditRequest): Messa
// properties of how the user has interacted with the
// message, and not its rendering.
const {content, flags, is_me_message} = markdown.render(message.raw_content);
message.content = content;
message_store.update_message_content(message, content);
message.flags = flags;
message.is_me_message = is_me_message;
if (request.starred !== undefined) {
@@ -548,7 +548,7 @@ export function process_from_server(messages: ServerMessage[]): ServerMessage[]
}
if (client_message.content !== message.content) {
client_message.content = message.content;
message_store.update_message_content(client_message, message.content);
sent_messages.mark_disparity(local_id);
}
sent_messages.report_event_received(local_id);

View File

@@ -447,7 +447,7 @@ export function update_messages(events: UpdateMessageEvent[]): void {
message_store.update_booleans(anchor_message, event.flags);
if (event.rendered_content !== undefined) {
anchor_message.content = event.rendered_content;
message_store.update_message_content(anchor_message, event.rendered_content);
}
if (event.is_me_message !== undefined) {

View File

@@ -396,6 +396,10 @@ export function reify_message_id({old_id, new_id}: {old_id: number; new_id: numb
}
}
export function update_message_content(message: Message, new_content: string): void {
message.content = new_content;
}
export function remove(message_ids: number[]): void {
for (const message_id of message_ids) {
stored_messages.delete(message_id);

View File

@@ -34,6 +34,10 @@ const message_store = mock_esm("../src/message_store", {
update_booleans() {},
update_message_content(message, new_content) {
message.content = new_content;
},
convert_raw_message_to_message_with_booleans() {},
});