mirror of
https://github.com/zulip/zulip.git
synced 2026-07-06 21:18:58 +08:00
group-permission-settings: Add function to get list of setting names.
This commit adds a function which returns type checked list of group permission setting names so that all the type checking has to be done only once.
This commit is contained in:
parent
ab67b87db3
commit
4cb9fb0d5a
@ -111,6 +111,7 @@ EXEMPT_FILES = make_set(
|
||||
"web/src/giphy.ts",
|
||||
"web/src/giphy_state.ts",
|
||||
"web/src/global.ts",
|
||||
"web/src/group_permission_settings.ts",
|
||||
"web/src/group_setting_pill.ts",
|
||||
"web/src/hash_util.ts",
|
||||
"web/src/hashchange.ts",
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
import {z} from "zod";
|
||||
|
||||
import {realm} from "./state_data.ts";
|
||||
import type {GroupPermissionSetting} from "./state_data.ts";
|
||||
|
||||
@ -14,3 +16,20 @@ export function get_group_permission_setting_config(
|
||||
}
|
||||
return permission_config_dict;
|
||||
}
|
||||
|
||||
export const group_setting_name_schema = z.enum([
|
||||
"can_add_members_group",
|
||||
"can_join_group",
|
||||
"can_leave_group",
|
||||
"can_manage_group",
|
||||
"can_mention_group",
|
||||
"can_remove_members_group",
|
||||
]);
|
||||
|
||||
export type GroupSettingName = z.infer<typeof group_setting_name_schema>;
|
||||
|
||||
export function get_group_permission_settings(): GroupSettingName[] {
|
||||
return z
|
||||
.array(group_setting_name_schema)
|
||||
.parse(Object.keys(realm.server_supported_permission_settings.group));
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import * as blueslip from "./blueslip.ts";
|
||||
import * as compose_banner from "./compose_banner.ts";
|
||||
import type {DropdownWidget} from "./dropdown_widget.ts";
|
||||
import * as group_permission_settings from "./group_permission_settings.ts";
|
||||
import type {GroupSettingName} from "./group_permission_settings.ts";
|
||||
import * as group_setting_pill from "./group_setting_pill.ts";
|
||||
import {$t} from "./i18n.ts";
|
||||
import {
|
||||
@ -1559,17 +1560,6 @@ export function set_group_setting_widget_value(
|
||||
}
|
||||
}
|
||||
|
||||
export const group_setting_name_schema = z.enum([
|
||||
"can_add_members_group",
|
||||
"can_join_group",
|
||||
"can_leave_group",
|
||||
"can_manage_group",
|
||||
"can_mention_group",
|
||||
"can_remove_members_group",
|
||||
]);
|
||||
|
||||
export type GroupSettingName = z.infer<typeof group_setting_name_schema>;
|
||||
|
||||
export function create_group_setting_widget({
|
||||
$pill_container,
|
||||
setting_name,
|
||||
|
||||
@ -2,6 +2,7 @@ import $ from "jquery";
|
||||
import assert from "minimalistic-assert";
|
||||
|
||||
import * as channel from "./channel.ts";
|
||||
import * as group_permission_settings from "./group_permission_settings.ts";
|
||||
import {$t, $t_html} from "./i18n.ts";
|
||||
import * as keydown_util from "./keydown_util.ts";
|
||||
import * as loading from "./loading.ts";
|
||||
@ -262,11 +263,11 @@ export function set_up_handlers(): void {
|
||||
// This will always be enabled when creating a user group.
|
||||
settings_components.enable_opening_typeahead_on_clicking_label($container);
|
||||
|
||||
const permission_settings = Object.keys(realm.server_supported_permission_settings.group);
|
||||
const permission_settings = group_permission_settings.get_group_permission_settings();
|
||||
for (const setting_name of permission_settings) {
|
||||
const widget = settings_components.create_group_setting_widget({
|
||||
$pill_container: $(`#id_new_group_${CSS.escape(setting_name)}`),
|
||||
setting_name: settings_components.group_setting_name_schema.parse(setting_name),
|
||||
setting_name,
|
||||
});
|
||||
group_setting_widget_map.set(setting_name, widget);
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ import type {Toggle} from "./components.ts";
|
||||
import * as compose_banner from "./compose_banner.ts";
|
||||
import * as confirm_dialog from "./confirm_dialog.ts";
|
||||
import * as dialog_widget from "./dialog_widget.ts";
|
||||
import * as group_permission_settings from "./group_permission_settings.ts";
|
||||
import * as hash_util from "./hash_util.ts";
|
||||
import {$t, $t_html} from "./i18n.ts";
|
||||
import * as ListWidget from "./list_widget.ts";
|
||||
@ -29,7 +30,6 @@ import * as overlays from "./overlays.ts";
|
||||
import * as people from "./people.ts";
|
||||
import * as scroll_util from "./scroll_util.ts";
|
||||
import * as settings_components from "./settings_components.ts";
|
||||
import {group_setting_name_schema} from "./settings_components.ts";
|
||||
import * as settings_config from "./settings_config.ts";
|
||||
import * as settings_data from "./settings_data.ts";
|
||||
import * as settings_org from "./settings_org.ts";
|
||||
@ -193,9 +193,7 @@ function show_membership_settings(group: UserGroup): void {
|
||||
}
|
||||
|
||||
function show_general_settings(group: UserGroup): void {
|
||||
const permission_settings = z
|
||||
.array(group_setting_name_schema)
|
||||
.parse(Object.keys(realm.server_supported_permission_settings.group));
|
||||
const permission_settings = group_permission_settings.get_group_permission_settings();
|
||||
for (const setting_name of permission_settings) {
|
||||
settings_components.create_group_setting_widget({
|
||||
$pill_container: $(`#id_${CSS.escape(setting_name)}`),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user