markdown: Remove wrapper around get_topic_links.

Since it's only used in one place, and all callers
of it user the same value for the linkifier.

https://github.com/zulip/zulip/pull/28652#discussion_r1470516258
This commit is contained in:
evykassirer 2024-01-21 23:10:12 -08:00 committed by Tim Abbott
parent fb47efc981
commit 0571145029
6 changed files with 30 additions and 41 deletions

View File

@ -192,7 +192,11 @@ export function insert_local_message(message_request, local_id_float, insert_new
message.local_id = local_id_float.toString();
message.locally_echoed = true;
message.id = local_id_float;
markdown.add_topic_links(message);
if (message.topic === undefined) {
message.topic_links = [];
} else {
message.topic_links = markdown.get_topic_links(message.topic);
}
waiting_for_id.set(message.local_id, message);
waiting_for_ack.set(message.local_id, message);

View File

@ -30,6 +30,8 @@ function contains_preview_link(content) {
return preview_regexes.some((re) => re.test(content));
}
let web_app_helpers;
export function translate_emoticons_to_names({src, get_emoticon_translations}) {
// Translates emoticons in a string to their colon syntax.
let translated = src;
@ -318,13 +320,15 @@ function is_overlapping(match_a, match_b) {
);
}
export function get_topic_links({topic, get_linkifier_map}) {
export function get_topic_links(topic) {
// We export this for testing purposes, and mobile may want to
// use this as well in the future.
const links = [];
// The lower the precedence is, the more prioritized the pattern is.
let precedence = 0;
const get_linkifier_map = web_app_helpers.get_linkifier_map;
for (const [pattern, {url_template, group_number_to_name}] of get_linkifier_map().entries()) {
let match;
while ((match = pattern.exec(topic)) !== null) {
@ -667,8 +671,6 @@ export function parse({raw_content, helper_config}) {
// We may eventually move this code to a new file, but we want
// to wait till the dust settles a bit on some other changes first.
let web_app_helpers;
export function initialize(helper_config) {
// This is generally only intended to be called by the web app. Most
// other platforms should call setup().
@ -686,17 +688,6 @@ export function render(raw_content) {
};
}
export function add_topic_links(message) {
if (message.type !== "stream") {
message.topic_links = [];
return;
}
message.topic_links = get_topic_links({
topic: message.topic,
get_linkifier_map: web_app_helpers.get_linkifier_map,
});
}
export function contains_backend_only_syntax(content) {
return content_contains_backend_only_syntax({
content,

View File

@ -236,7 +236,7 @@ test_ui("send_message", ({override, override_rewire, mock_template}) => {
const server_message_id = 127;
override(markdown, "render", noop);
override(markdown, "add_topic_links", noop);
override(markdown, "get_topic_links", noop);
override_rewire(echo, "try_deliver_locally", (message_request) => {
const local_id_float = 123.04;

View File

@ -222,15 +222,15 @@ run_test("insert_local_message streams", ({override}) => {
const local_id_float = 101.01;
let render_called = false;
let add_topic_links_called = false;
let get_topic_links_called = false;
let insert_message_called = false;
override(markdown, "render", () => {
render_called = true;
});
override(markdown, "add_topic_links", () => {
add_topic_links_called = true;
override(markdown, "get_topic_links", () => {
get_topic_links_called = true;
});
const insert_new_messages = ([message]) => {
@ -245,6 +245,7 @@ run_test("insert_local_message streams", ({override}) => {
const message_request = {
type: "stream",
stream_id: general_sub.stream_id,
topic: "important note",
sender_email: "iago@zulip.com",
sender_full_name: "Iago",
sender_id: 123,
@ -252,7 +253,7 @@ run_test("insert_local_message streams", ({override}) => {
echo.insert_local_message(message_request, local_id_float, insert_new_messages);
assert.ok(render_called);
assert.ok(add_topic_links_called);
assert.ok(get_topic_links_called);
assert.ok(insert_message_called);
});
@ -273,7 +274,6 @@ run_test("insert_local_message direct message", ({override}) => {
params.cross_realm_bots = [];
people.initialize(page_params.user_id, params);
let add_topic_links_called = false;
let render_called = false;
let insert_message_called = false;
@ -286,10 +286,6 @@ run_test("insert_local_message direct message", ({override}) => {
render_called = true;
});
override(markdown, "add_topic_links", () => {
add_topic_links_called = true;
});
const message_request = {
private_message_recipient: "cordelia@zulip.com,hamlet@zulip.com",
type: "private",
@ -298,7 +294,6 @@ run_test("insert_local_message direct message", ({override}) => {
sender_id: 123,
};
echo.insert_local_message(message_request, local_id_float, insert_new_messages);
assert.ok(add_topic_links_called);
assert.ok(render_called);
assert.ok(insert_message_called);
});
@ -307,7 +302,6 @@ run_test("test reify_message_id", ({override}) => {
const local_id_float = 103.01;
override(markdown, "render", noop);
override(markdown, "add_topic_links", noop);
const message_request = {
type: "stream",

View File

@ -640,11 +640,11 @@ test("marked", () => {
test("topic_links", () => {
let message = {type: "stream", topic: "No links here"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 0);
message = {type: "stream", topic: "One #123 link here"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 1);
assert.deepEqual(message.topic_links[0], {
url: "https://trac.example.com/ticket/123",
@ -652,7 +652,7 @@ test("topic_links", () => {
});
message = {type: "stream", topic: "Two #123 #456 link here"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 2);
assert.deepEqual(message.topic_links[0], {
url: "https://trac.example.com/ticket/123",
@ -664,7 +664,7 @@ test("topic_links", () => {
});
message = {type: "stream", topic: "New ZBUG_123 link here"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 1);
assert.deepEqual(message.topic_links[0], {
url: "https://trac2.zulip.net/ticket/123",
@ -672,7 +672,7 @@ test("topic_links", () => {
});
message = {type: "stream", topic: "New ZBUG_123 with #456 link here"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 2);
assert.deepEqual(message.topic_links[0], {
url: "https://trac2.zulip.net/ticket/123",
@ -684,7 +684,7 @@ test("topic_links", () => {
});
message = {type: "stream", topic: "One ZGROUP_123:45 link here"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 1);
assert.deepEqual(message.topic_links[0], {
url: "https://zone_45.zulip.net/ticket/123",
@ -692,7 +692,7 @@ test("topic_links", () => {
});
message = {type: "stream", topic: "Hello https://google.com"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 1);
assert.deepEqual(message.topic_links[0], {
url: "https://google.com",
@ -700,7 +700,7 @@ test("topic_links", () => {
});
message = {type: "stream", topic: "#456 https://google.com https://github.com"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 3);
assert.deepEqual(message.topic_links[0], {
url: "https://trac.example.com/ticket/456",
@ -716,11 +716,11 @@ test("topic_links", () => {
});
message = {type: "not-stream"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 0);
message = {type: "stream", topic: "FOO_abcde;e;zulip;luxembourg;foo;23;testing"};
markdown.add_topic_links(message);
message.topic_links = markdown.get_topic_links(message.topic);
assert.equal(message.topic_links.length, 1);
assert.deepEqual(message.topic_links[0], {
url: "https://zone_e.zulip.net/ticket/luxembourg/abcde?name=foo&chapter=23#testi",

View File

@ -223,15 +223,15 @@ run_test("linkifiers", () => {
});
function assert_topic_links(topic, expected_links) {
const topic_links = markdown.get_topic_links({
topic,
get_linkifier_map: linkifiers.get_linkifier_map,
});
const topic_links = markdown.get_topic_links(topic);
assert.deepEqual(topic_links, expected_links);
}
run_test("topic links", () => {
linkifiers.initialize([{pattern: "#foo(?P<id>\\d+)", url_template: "http://foo.com/{id}"}]);
markdown.initialize({
get_linkifier_map: linkifiers.get_linkifier_map,
});
assert_topic_links("progress on #foo101 and #foo102", [
{
text: "#foo101",