settings: Add move_messages_within_stream_limit_seconds element in UI.

This commit adds dropdown for move_messages_within_stream_limit_seconds
setting which is used to control for how long the user is allowed to
edit topic.
This commit is contained in:
Sahil Batra
2022-12-22 23:44:23 +05:30
committed by Tim Abbott
parent 03df1c16f1
commit 4378b1639d
8 changed files with 106 additions and 2 deletions

View File

@@ -328,6 +328,45 @@ function set_msg_edit_limit_dropdown() {
set_time_limit_setting("realm_message_content_edit_limit_seconds");
}
function message_move_limit_setting_enabled(related_setting_name) {
const setting_value = Number.parseInt($(`#id_${CSS.escape(related_setting_name)}`).val(), 10);
let settings_options;
if (related_setting_name === "realm_edit_topic_policy") {
settings_options = settings_config.edit_topic_policy_values;
} else {
settings_options = settings_config.move_messages_between_streams_policy_values;
}
if (setting_value === settings_options.by_admins_only.code) {
return false;
}
if (setting_value === settings_options.by_moderators_only.code) {
return false;
}
if (setting_value === settings_options.nobody.code) {
return false;
}
return true;
}
function enable_or_disable_related_message_move_time_limit_setting(setting_name, disable_setting) {
const $setting_elem = $(`#id_${CSS.escape(setting_name)}`);
const $custom_input_elem = $setting_elem.parent().find(".time-limit-custom-input");
settings_ui.disable_sub_setting_onchange(disable_setting, $setting_elem.attr("id"), true);
settings_ui.disable_sub_setting_onchange(disable_setting, $custom_input_elem.attr("id"), true);
}
function set_msg_move_limit_setting(property_name) {
set_time_limit_setting(property_name);
const disable_setting = message_move_limit_setting_enabled("realm_edit_topic_policy");
enable_or_disable_related_message_move_time_limit_setting(property_name, disable_setting);
}
function message_delete_limit_setting_enabled(setting_value) {
// This function is used to check whether the time-limit setting
// should be enabled. The setting is disabled when delete_own_message_policy
@@ -633,6 +672,9 @@ export function discard_property_element_changes(elem, for_realm_default_setting
case "realm_message_content_delete_limit_seconds":
set_time_limit_setting(property_name);
break;
case "realm_move_messages_within_stream_limit_seconds":
set_msg_move_limit_setting(property_name);
break;
case "realm_message_retention_days":
case "message_retention_days":
set_message_retention_setting_dropdown(sub);
@@ -886,6 +928,7 @@ export function check_property_changed(elem, for_realm_default_settings, sub) {
break;
case "realm_message_content_edit_limit_seconds":
case "realm_message_content_delete_limit_seconds":
case "realm_move_messages_within_stream_limit_seconds":
case "realm_waiting_period_threshold":
proposed_val = get_time_limit_setting_value($elem, false);
break;
@@ -1181,6 +1224,7 @@ export function build_page() {
set_video_chat_provider_dropdown();
set_giphy_rating_dropdown();
set_msg_edit_limit_dropdown();
set_msg_move_limit_setting("realm_move_messages_within_stream_limit_seconds");
set_msg_delete_limit_dropdown();
set_delete_own_message_policy_dropdown(page_params.realm_delete_own_message_policy);
set_message_retention_setting_dropdown();
@@ -1206,6 +1250,10 @@ export function build_page() {
update_custom_value_input("realm_message_content_edit_limit_seconds");
});
$("#id_realm_move_messages_within_stream_limit_seconds").on("change", () => {
update_custom_value_input("realm_move_messages_within_stream_limit_seconds");
});
$("#id_realm_message_content_delete_limit_seconds").on("change", () => {
update_custom_value_input("realm_message_content_delete_limit_seconds");
});
@@ -1252,6 +1300,18 @@ export function build_page() {
update_message_edit_sub_settings(is_checked);
});
$("#org-moving-msgs").on("change", ".move-message-policy-setting", (e) => {
const $policy_dropdown_elem = $(e.target);
const property_name = extract_property_name($policy_dropdown_elem);
const disable_time_limit_setting = message_move_limit_setting_enabled(property_name);
const time_limit_setting_name = "realm_move_messages_within_stream_limit_seconds";
enable_or_disable_related_message_move_time_limit_setting(
time_limit_setting_name,
disable_time_limit_setting,
);
});
$("#id_realm_delete_own_message_policy").on("change", (e) => {
const setting_value = Number.parseInt($(e.target).val(), 10);
set_delete_own_message_policy_dropdown(setting_value);