settings: Use new settings UI for create_multiuse_invite_group.

This commit is contained in:
Sahil Batra
2024-10-27 16:01:15 +05:30
committed by Tim Abbott
parent d370499557
commit 60b12367cc
10 changed files with 124 additions and 12 deletions

View File

@@ -27,7 +27,7 @@ import * as scroll_util from "./scroll_util";
import * as settings_config from "./settings_config";
import * as settings_data from "./settings_data";
import type {CustomProfileField, GroupSettingValue} from "./state_data";
import {current_user, realm, realm_schema} from "./state_data";
import {current_user, group_setting_value_schema, realm, realm_schema} from "./state_data";
import * as stream_data from "./stream_data";
import type {StreamSubscription} from "./sub_store";
import {stream_subscription_schema} from "./sub_store";
@@ -488,7 +488,6 @@ const dropdown_widget_map = new Map<string, DropdownWidget | null>([
["realm_can_delete_own_message_group", null],
["realm_can_manage_all_groups", null],
["realm_can_move_messages_between_channels_group", null],
["realm_create_multiuse_invite_group", null],
["realm_direct_message_initiator_group", null],
["realm_direct_message_permission_group", null],
]);
@@ -801,7 +800,6 @@ export function check_realm_settings_property_changed(elem: HTMLElement): boolea
case "realm_signup_announcements_stream_id":
case "realm_zulip_update_announcements_stream_id":
case "realm_default_code_block_language":
case "realm_create_multiuse_invite_group":
case "realm_can_access_all_users_group":
case "realm_can_add_custom_emoji_group":
case "realm_can_create_groups":
@@ -816,6 +814,12 @@ export function check_realm_settings_property_changed(elem: HTMLElement): boolea
case "realm_direct_message_permission_group":
proposed_val = get_dropdown_list_widget_setting_value($elem);
break;
case "realm_create_multiuse_invite_group": {
const pill_widget = get_group_setting_widget(property_name);
assert(pill_widget !== null);
proposed_val = get_group_setting_widget_value(pill_widget);
break;
}
case "realm_message_content_edit_limit_seconds":
case "realm_message_content_delete_limit_seconds":
case "realm_move_messages_between_streams_limit_seconds":
@@ -844,7 +848,7 @@ export function check_realm_settings_property_changed(elem: HTMLElement): boolea
blueslip.error("Element refers to unknown property", {property_name});
}
}
return current_val !== proposed_val;
return !_.isEqual(current_val, proposed_val);
}
export function check_stream_settings_property_changed(
@@ -1426,6 +1430,7 @@ export const group_setting_widget_map = new Map<string, GroupSettingPillContaine
["can_leave_group", null],
["can_manage_group", null],
["can_mention_group", null],
["realm_create_multiuse_invite_group", null],
]);
export function get_group_setting_widget(setting_name: string): GroupSettingPillContainer | null {
@@ -1525,3 +1530,41 @@ export function create_group_setting_widget({
return pill_widget;
}
type realm_group_setting_name = "create_multiuse_invite_group";
export function create_realm_group_setting_widget({
$pill_container,
setting_name,
}: {
$pill_container: JQuery;
setting_name: realm_group_setting_name;
}): void {
const pill_widget = group_setting_pill.create_pills($pill_container, setting_name, "realm");
const opts: {
setting_name: string;
setting_type: "realm";
} = {
setting_name,
setting_type: "realm",
};
group_setting_pill.set_up_pill_typeahead({pill_widget, $pill_container, opts});
group_setting_widget_map.set("realm_" + setting_name, pill_widget);
set_group_setting_widget_value(
pill_widget,
group_setting_value_schema.parse(
realm[realm_schema.keyof().parse("realm_" + setting_name)],
),
);
const $save_discard_widget_container = $(`#id_realm_${CSS.escape(setting_name)}`).closest(
".settings-subsection-parent",
);
pill_widget.onPillCreate(() => {
save_discard_realm_settings_widget_status_handler($save_discard_widget_container);
});
pill_widget.onPillRemove(() => {
save_discard_realm_settings_widget_status_handler($save_discard_widget_container);
});
}