stream: Loop over group settings for setup_group_setting_widgets.

We won't have to add another block of code here when adding a new
setting in the future.
This commit is contained in:
Shubham Padia
2024-11-29 04:12:46 +00:00
committed by Tim Abbott
parent dbf9f2d181
commit 217bd0a334
2 changed files with 14 additions and 9 deletions

View File

@@ -30,7 +30,10 @@ import type {CustomProfileField, GroupSettingValue} from "./state_data.ts";
import {current_user, realm, realm_schema} from "./state_data.ts"; import {current_user, realm, realm_schema} from "./state_data.ts";
import * as stream_data from "./stream_data.ts"; import * as stream_data from "./stream_data.ts";
import * as stream_settings_containers from "./stream_settings_containers.ts"; import * as stream_settings_containers from "./stream_settings_containers.ts";
import type {StreamPermissionGroupSetting} from "./stream_types.ts"; import {
type StreamPermissionGroupSetting,
stream_permission_group_settings_schema,
} from "./stream_types.ts";
import type {StreamSubscription} from "./sub_store.ts"; import type {StreamSubscription} from "./sub_store.ts";
import {stream_subscription_schema} from "./sub_store.ts"; import {stream_subscription_schema} from "./sub_store.ts";
import type {GroupSettingPillContainer} from "./typeahead_helper.ts"; import type {GroupSettingPillContainer} from "./typeahead_helper.ts";
@@ -1104,8 +1107,7 @@ export function populate_data_for_stream_settings_request(
continue; continue;
} }
const stream_group_settings = new Set(["can_remove_subscribers_group"]); if (stream_permission_group_settings_schema.safeParse(property_name).success) {
if (stream_group_settings.has(property_name)) {
const old_value = get_stream_settings_property_value( const old_value = get_stream_settings_property_value(
stream_settings_property_schema.parse(property_name), stream_settings_property_schema.parse(property_name),
sub, sub,
@@ -1386,7 +1388,7 @@ function should_disable_save_button_for_group_settings(settings: string[]): bool
setting_name_without_prefix, setting_name_without_prefix,
"realm", "realm",
); );
} else if (setting_name === "can_remove_subscribers_group") { } else if (stream_permission_group_settings_schema.safeParse(setting_name).success) {
group_setting_config = group_permission_settings.get_group_permission_setting_config( group_setting_config = group_permission_settings.get_group_permission_setting_config(
setting_name, setting_name,
"stream", "stream",

View File

@@ -38,6 +38,7 @@ import * as stream_settings_containers from "./stream_settings_containers.ts";
import * as stream_settings_data from "./stream_settings_data.ts"; import * as stream_settings_data from "./stream_settings_data.ts";
import type {SettingsSubscription} from "./stream_settings_data.ts"; import type {SettingsSubscription} from "./stream_settings_data.ts";
import { import {
stream_permission_group_settings_schema,
stream_properties_schema, stream_properties_schema,
stream_specific_notification_settings_schema, stream_specific_notification_settings_schema,
} from "./stream_types.ts"; } from "./stream_types.ts";
@@ -233,11 +234,13 @@ export function stream_settings(sub: StreamSubscription): StreamSetting[] {
} }
function setup_group_setting_widgets(sub: StreamSubscription): void { function setup_group_setting_widgets(sub: StreamSubscription): void {
settings_components.create_stream_group_setting_widget({ for (const setting_name of Object.keys(realm.server_supported_permission_settings.stream)) {
$pill_container: $("#id_can_remove_subscribers_group"), settings_components.create_stream_group_setting_widget({
setting_name: "can_remove_subscribers_group", $pill_container: $("#id_" + setting_name),
sub, setting_name: stream_permission_group_settings_schema.parse(setting_name),
}); sub,
});
}
} }
export function show_settings_for(node: HTMLElement): void { export function show_settings_for(node: HTMLElement): void {