mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
user_groups: Add helper functions to get options for group-based setting.
This commit adds get_realm_user_groups_for_dropdown_list_widget function which returns the list of objects containing the display name and id of system user groups and adds tests for this function.
This commit is contained in:
@@ -801,3 +801,34 @@ export const desktop_icon_count_display_values = {
|
||||
description: $t({defaultMessage: "None"}),
|
||||
},
|
||||
};
|
||||
|
||||
export const system_user_groups_list = [
|
||||
{
|
||||
name: "@role:internet",
|
||||
display_name: $t({defaultMessage: "Everyone on the internet"}),
|
||||
},
|
||||
{
|
||||
name: "@role:everyone",
|
||||
display_name: $t({defaultMessage: "Admins, moderators, members and guests"}),
|
||||
},
|
||||
{
|
||||
name: "@role:members",
|
||||
display_name: $t({defaultMessage: "Admins, moderators and members"}),
|
||||
},
|
||||
{
|
||||
name: "@role:fullmembers",
|
||||
display_name: $t({defaultMessage: "Admins, moderators and full members"}),
|
||||
},
|
||||
{
|
||||
name: "@role:moderators",
|
||||
display_name: $t({defaultMessage: "Admins and moderators"}),
|
||||
},
|
||||
{
|
||||
name: "@role:administrators",
|
||||
display_name: $t({defaultMessage: "Admins"}),
|
||||
},
|
||||
{
|
||||
name: "@role:owners",
|
||||
display_name: $t({defaultMessage: "Owners"}),
|
||||
},
|
||||
];
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import * as blueslip from "./blueslip";
|
||||
import {FoldDict} from "./fold_dict";
|
||||
import * as settings_config from "./settings_config";
|
||||
import type {User, UserGroupUpdateEvent} from "./types";
|
||||
|
||||
type UserGroup = {
|
||||
@@ -15,6 +16,11 @@ type UserGroup = {
|
||||
// to a Set in the initialize function.
|
||||
type UserGroupRaw = Omit<UserGroup, "members"> & {members: number[]};
|
||||
|
||||
type UserGroupForDropdownListWidget = {
|
||||
name: string;
|
||||
value: string;
|
||||
};
|
||||
|
||||
let user_group_name_dict: FoldDict<UserGroup>;
|
||||
let user_group_by_id_dict: Map<number, UserGroup>;
|
||||
|
||||
@@ -195,3 +201,31 @@ export function is_user_in_group(user_group_id: number, user_id: number): boolea
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export function get_realm_user_groups_for_dropdown_list_widget(
|
||||
exclude_internet_group: boolean,
|
||||
exclude_owners_group: boolean,
|
||||
): UserGroupForDropdownListWidget[] {
|
||||
return settings_config.system_user_groups_list
|
||||
.filter((group) => {
|
||||
if (exclude_internet_group && group.name === "@role:internet") {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (exclude_owners_group && group.name === "@role:owners") {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.map((group) => {
|
||||
const user_group = get_user_group_from_name(group.name);
|
||||
if (!user_group) {
|
||||
throw new Error(`Unknown group name: ${group.name}`);
|
||||
}
|
||||
return {
|
||||
name: group.display_name,
|
||||
value: user_group.id.toString(),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user