user_group: Use Intl.listformat instead of manually inserting commas.

In some other languages, ", " isn't the best way to do a list and
Intl.listformat is a better choice in those cases.
This commit is contained in:
Shubham Padia
2024-12-03 10:38:20 +00:00
committed by Tim Abbott
parent 3f5fe756bb
commit 08e1a44ce6
2 changed files with 10 additions and 7 deletions

View File

@@ -331,8 +331,7 @@ function update_settings_for_group_overlay(group_id, user_ids) {
item, item,
people.my_current_user_id(), people.my_current_user_id(),
); );
item.associated_subgroup_names = item.associated_subgroup_names = user_groups.format_group_list(associated_subgroups);
user_groups.group_list_to_comma_seperated_name(associated_subgroups);
const html = render_browse_user_groups_list_item(item); const html = render_browse_user_groups_list_item(item);
const $new_row = $(html); const $new_row = $(html);
@@ -915,7 +914,7 @@ export function setup_page(callback) {
people.my_current_user_id(), people.my_current_user_id(),
); );
item.associated_subgroup_names = item.associated_subgroup_names =
user_groups.group_list_to_comma_seperated_name(associated_subgroups); user_groups.format_group_list(associated_subgroups);
item.can_join = settings_data.can_join_user_group(item.id); item.can_join = settings_data.can_join_user_group(item.id);
item.can_leave = settings_data.can_leave_user_group(item.id); item.can_leave = settings_data.can_leave_user_group(item.id);
return render_browse_user_groups_list_item(item); return render_browse_user_groups_list_item(item);
@@ -1156,8 +1155,7 @@ export function initialize() {
user_group, user_group,
people.my_current_user_id(), people.my_current_user_id(),
); );
const associated_subgroup_names = const associated_subgroup_names = user_groups.format_group_list(associated_subgroups);
user_groups.group_list_to_comma_seperated_name(associated_subgroups);
confirm_dialog.launch({ confirm_dialog.launch({
html_heading: $t_html({defaultMessage: "Join group?"}), html_heading: $t_html({defaultMessage: "Join group?"}),

View File

@@ -11,6 +11,7 @@ import type {GroupPermissionSetting, GroupSettingValue, StateData} from "./state
import {current_user, raw_user_group_schema, realm} from "./state_data.ts"; import {current_user, raw_user_group_schema, realm} from "./state_data.ts";
import type {UserOrMention} from "./typeahead_helper.ts"; import type {UserOrMention} from "./typeahead_helper.ts";
import type {UserGroupUpdateEvent} from "./types.ts"; import type {UserGroupUpdateEvent} from "./types.ts";
import * as util from "./util.ts";
type UserGroupRaw = z.infer<typeof raw_user_group_schema>; type UserGroupRaw = z.infer<typeof raw_user_group_schema>;
@@ -433,8 +434,12 @@ export function get_associated_subgroups(user_group: UserGroup, user_id: number)
return subgroups; return subgroups;
} }
export function group_list_to_comma_seperated_name(user_groups: UserGroup[]): string { export function format_group_list(user_groups: UserGroup[]): string {
return user_groups.map((user_group) => user_group.name).join(", "); return util.format_array_as_list(
user_groups.map((user_group) => user_group.name),
"short",
"conjunction",
);
} }
export function is_user_in_setting_group( export function is_user_in_setting_group(