subscribers: Use _html in content inserted as HTML.

This makes it easier for maintainers to verify that code using `{{{`
is already rendered HTML, intended for insertion into the DOM.
This commit is contained in:
Tim Abbott
2025-07-18 18:14:12 -07:00
parent 0908f0ac30
commit 6036dc9812
4 changed files with 42 additions and 40 deletions

View File

@@ -75,9 +75,9 @@ function generate_subscribe_success_messages(
already_subscribed_users: User[],
ignored_deactivated_users: User[],
): {
subscribed_users_message: string;
already_subscribed_users_message: string;
ignored_deactivated_users_message: string;
subscribed_users_message_html: string;
already_subscribed_users_message_html: string;
ignored_deactivated_users_message_html: string;
} {
const subscribed_user_links = subscribed_users.map(
(user) =>
@@ -92,22 +92,22 @@ function generate_subscribe_success_messages(
`<a data-user-id="${user.user_id}" class="view_user_profile">${Handlebars.Utils.escapeExpression(user.full_name)}</a>`,
);
const subscribed_users_message = util.format_array_as_list_with_conjunction(
const subscribed_users_message_html = util.format_array_as_list_with_conjunction(
subscribed_user_links,
"long",
);
const already_subscribed_users_message = util.format_array_as_list_with_conjunction(
const already_subscribed_users_message_html = util.format_array_as_list_with_conjunction(
already_subscribed_user_links,
"long",
);
const ignored_deactivated_users_message = util.format_array_as_list_with_conjunction(
const ignored_deactivated_users_message_html = util.format_array_as_list_with_conjunction(
ignored_deactivated_user_links,
"long",
);
return {
subscribed_users_message,
already_subscribed_users_message,
ignored_deactivated_users_message,
subscribed_users_message_html,
already_subscribed_users_message_html,
ignored_deactivated_users_message_html,
};
}

View File

@@ -181,12 +181,12 @@ export function rerender_members_list({
});
}
function generate_group_link(group: UserGroup): string {
function generate_group_link_html(group: UserGroup): string {
const group_name = user_groups.get_display_group_name(group.name);
return `<a data-user-group-id="${group.id}" class="view_user_group">${Handlebars.Utils.escapeExpression(group_name)}</a>`;
}
function generate_user_link(user: User): string {
function generate_user_link_html(user: User): string {
return `<a data-user-id="${user.user_id}" class="view_user_profile">${Handlebars.Utils.escapeExpression(user.full_name)}</a>`;
}
@@ -198,41 +198,43 @@ function generate_members_added_success_messages(
ignored_deactivated_groups: UserGroup[],
ignored_deactivated_users: User[],
): {
newly_added_members_message: string;
already_added_members_message: string;
ignored_deactivated_users_message: string;
ignored_deactivated_groups_message: string;
newly_added_members_message_html: string;
already_added_members_message_html: string;
ignored_deactivated_users_message_html: string;
ignored_deactivated_groups_message_html: string;
} {
const new_user_links = newly_added_users.map((user) => generate_user_link(user));
const new_group_links = newly_added_subgroups.map((group) => generate_group_link(group));
const old_user_links = already_added_users.map((user) => generate_user_link(user));
const old_group_links = already_added_subgroups.map((group) => generate_group_link(group));
const new_user_links = newly_added_users.map((user) => generate_user_link_html(user));
const new_group_links = newly_added_subgroups.map((group) => generate_group_link_html(group));
const old_user_links = already_added_users.map((user) => generate_user_link_html(user));
const old_group_links = already_added_subgroups.map((group) => generate_group_link_html(group));
const ignored_group_links = ignored_deactivated_groups.map((group) =>
generate_group_link(group),
generate_group_link_html(group),
);
const ignored_user_links = ignored_deactivated_users.map((user) =>
generate_user_link_html(user),
);
const ignored_user_links = ignored_deactivated_users.map((user) => generate_user_link(user));
const newly_added_members_message = util.format_array_as_list_with_conjunction(
const newly_added_members_message_html = util.format_array_as_list_with_conjunction(
[...new_user_links, ...new_group_links],
"long",
);
const already_added_members_message = util.format_array_as_list_with_conjunction(
const already_added_members_message_html = util.format_array_as_list_with_conjunction(
[...old_user_links, ...old_group_links],
"long",
);
const ignored_deactivated_users_message = util.format_array_as_list_with_conjunction(
const ignored_deactivated_users_message_html = util.format_array_as_list_with_conjunction(
ignored_user_links,
"long",
);
const ignored_deactivated_groups_message = util.format_array_as_list_with_conjunction(
const ignored_deactivated_groups_message_html = util.format_array_as_list_with_conjunction(
ignored_group_links,
"long",
);
return {
newly_added_members_message,
already_added_members_message,
ignored_deactivated_users_message,
ignored_deactivated_groups_message,
newly_added_members_message_html,
already_added_members_message_html,
ignored_deactivated_users_message_html,
ignored_deactivated_groups_message_html,
};
}

View File

@@ -17,13 +17,13 @@
{{else}}
{{#if (not is_total_subscriber_more_than_five) }}
{{#if subscribed_users}}
{{t "Subscribed:" }} {{{subscribe_success_messages.subscribed_users_message}}}.
{{t "Subscribed:" }} {{{subscribe_success_messages.subscribed_users_message_html}}}.
{{/if}}
{{#if already_subscribed_users}}
{{t "Already a subscriber:" }} {{{subscribe_success_messages.already_subscribed_users_message}}}.
{{t "Already a subscriber:" }} {{{subscribe_success_messages.already_subscribed_users_message_html}}}.
{{/if}}
{{#if ignored_deactivated_users}}
{{t "Ignored deactivated users:" }} {{{subscribe_success_messages.ignored_deactivated_users_message}}}.
{{t "Ignored deactivated users:" }} {{{subscribe_success_messages.ignored_deactivated_users_message_html}}}.
{{/if}}
{{else}}
{{#if subscribed_users}}

View File

@@ -20,17 +20,17 @@
{{/if}}
{{else}}
{{#if (not total_member_count_exceeds_five)}}
{{#if addition_success_messages.newly_added_members_message}}
{{t "Added:" }} {{{addition_success_messages.newly_added_members_message}}}.&nbsp;
{{#if addition_success_messages.newly_added_members_message_html}}
{{t "Added:" }} {{{addition_success_messages.newly_added_members_message_html}}}.&nbsp;
{{/if}}
{{#if addition_success_messages.already_added_members_message}}
{{t "Already a member:"}} {{{addition_success_messages.already_added_members_message}}}.
{{#if addition_success_messages.already_added_members_message_html}}
{{t "Already a member:"}} {{{addition_success_messages.already_added_members_message_html}}}.
{{/if}}
{{#if addition_success_messages.ignored_deactivated_users_message}}
{{t "Ignored deactivated users:"}} {{{addition_success_messages.ignored_deactivated_users_message}}}.
{{#if addition_success_messages.ignored_deactivated_users_message_html}}
{{t "Ignored deactivated users:"}} {{{addition_success_messages.ignored_deactivated_users_message_html}}}.
{{/if}}
{{#if addition_success_messages.ignored_deactivated_groups_message}}
{{t "Ignored deactivated groups:"}} {{{addition_success_messages.ignored_deactivated_groups_message}}}.
{{#if addition_success_messages.ignored_deactivated_groups_message_html}}
{{t "Ignored deactivated groups:"}} {{{addition_success_messages.ignored_deactivated_groups_message_html}}}.
{{/if}}
{{else}}
{{#if newly_added_member_count}}