message_edit: Make topic editing independent of allow_message_editing.

We now allow editing stream and topic of message even if
allow_message_editing if False using webapp given that is
allowed as per other topic and stream edit specific settings.

Fixes a part of #21739.
This commit is contained in:
Sahil Batra
2022-08-26 12:47:01 +05:30
committed by Tim Abbott
parent 815bf609fa
commit e6ec2badb5
8 changed files with 10 additions and 29 deletions

View File

@@ -34,7 +34,6 @@ const dark_theme = mock_esm("../../static/js/dark_theme");
const emoji_picker = mock_esm("../../static/js/emoji_picker");
const hotspots = mock_esm("../../static/js/hotspots");
const linkifiers = mock_esm("../../static/js/linkifiers");
const message_edit = mock_esm("../../static/js/message_edit");
const message_events = mock_esm("../../static/js/message_events");
const message_lists = mock_esm("../../static/js/message_lists");
const muted_topics_ui = mock_esm("../../static/js/muted_topics_ui");
@@ -469,7 +468,6 @@ run_test("realm settings", ({override}) => {
page_params.realm_allow_message_editing = false;
page_params.realm_message_content_edit_limit_seconds = 0;
override(settings_org, "populate_auth_methods", noop);
override(message_edit, "update_message_topic_editing_pencil", noop);
dispatch(event);
assert_same(page_params.realm_allow_message_editing, true);
assert_same(page_params.realm_message_content_edit_limit_seconds, 5);

View File

@@ -57,6 +57,9 @@ run_test("get_editability", ({override}) => {
page_params.realm_allow_message_editing = false;
assert.equal(get_editability(message), editability_types.NO);
message.type = "stream";
assert.equal(get_editability(message), editability_types.TOPIC_ONLY);
page_params.realm_allow_message_editing = true;
// Limit of 0 means no time limit on editing messages
page_params.realm_message_content_edit_limit_seconds = null;
@@ -143,7 +146,7 @@ run_test("is_topic_editable", ({override}) => {
assert.equal(message_edit.is_topic_editable(message), true);
page_params.realm_allow_message_editing = false;
assert.equal(message_edit.is_topic_editable(message), false);
assert.equal(message_edit.is_topic_editable(message), true);
});
run_test("get_deletability", ({override}) => {

View File

@@ -61,11 +61,6 @@ export function is_topic_editable(message, edit_limit_seconds_buffer = 0) {
return false;
}
if (!page_params.realm_allow_message_editing) {
// If message editing is disabled, so is topic editing.
return false;
}
// message senders can edit message topics indefinitely.
if (message.sent_by_me) {
return true;
@@ -140,6 +135,9 @@ export function get_editability(message, edit_limit_seconds_buffer = 0) {
}
if (!page_params.realm_allow_message_editing) {
if (message.type === "stream") {
return editability_types.TOPIC_ONLY;
}
return editability_types.NO;
}
@@ -200,10 +198,6 @@ export function get_deletability(message) {
}
export function can_move_message(message) {
if (!page_params.realm_allow_message_editing) {
return false;
}
if (!message.is_stream) {
return false;
}
@@ -265,14 +259,6 @@ export function stream_and_topic_exist_in_edit_history(message, stream_id, topic
return false;
}
export function update_message_topic_editing_pencil() {
if (page_params.realm_allow_message_editing) {
$(".on_hover_topic_edit, .always_visible_topic_edit").show();
} else {
$(".on_hover_topic_edit, .always_visible_topic_edit").hide();
}
}
export function hide_message_edit_spinner($row) {
$row.find(".loader").hide();
$row.find(".message_edit_save span").show();

View File

@@ -173,7 +173,6 @@ function set_timestr(message_container) {
}
function set_topic_edit_properties(group, message) {
group.realm_allow_message_editing = page_params.realm_allow_message_editing;
group.always_visible_topic_edit = false;
group.on_hover_topic_edit = false;
// if a user who can edit a topic, can resolve it as well

View File

@@ -18,7 +18,6 @@ import * as emoji_picker from "./emoji_picker";
import * as giphy from "./giphy";
import * as hotspots from "./hotspots";
import * as linkifiers from "./linkifiers";
import * as message_edit from "./message_edit";
import * as message_events from "./message_events";
import * as message_flags from "./message_flags";
import * as message_lists from "./message_lists";
@@ -260,9 +259,6 @@ export function dispatch_normal_event(event) {
case "default":
for (const [key, value] of Object.entries(event.data)) {
page_params["realm_" + key] = value;
if (key === "allow_message_editing") {
message_edit.update_message_topic_editing_pencil();
}
if (Object.hasOwn(realm_settings, key)) {
settings_org.sync_realm_settings(key);
}

View File

@@ -273,7 +273,6 @@ function update_message_edit_sub_settings(is_checked) {
"id_realm_message_content_edit_limit_minutes",
true,
);
settings_ui.disable_sub_setting_onchange(is_checked, "id_realm_edit_topic_policy", true);
}
function update_custom_value_input(property_name) {

View File

@@ -50,9 +50,9 @@
{{! edit topic pencil icon }}
{{#if always_visible_topic_edit}}
<i class="fa fa-pencil always_visible_topic_edit recipient_bar_icon hidden-for-spectators" {{#unless realm_allow_message_editing}}style="display: none"{{/unless}} data-tippy-content="{{t 'Edit topic'}}" role="button" tabindex="0" aria-label="{{t 'Edit topic' }}"></i>
<i class="fa fa-pencil always_visible_topic_edit recipient_bar_icon hidden-for-spectators" data-tippy-content="{{t 'Edit topic'}}" role="button" tabindex="0" aria-label="{{t 'Edit topic' }}"></i>
{{else if on_hover_topic_edit}}
<i class="fa fa-pencil on_hover_topic_edit recipient_bar_icon hidden-for-spectators" {{#unless realm_allow_message_editing}}style="display: none"{{/unless}} data-tippy-content="{{t 'Edit topic'}}" role="button" tabindex="0" aria-label="{{t 'Edit topic' }}"></i>
<i class="fa fa-pencil on_hover_topic_edit recipient_bar_icon hidden-for-spectators" data-tippy-content="{{t 'Edit topic'}}" role="button" tabindex="0" aria-label="{{t 'Edit topic' }}"></i>
{{/if}}
{{#if user_can_resolve_topic}}

View File

@@ -176,7 +176,7 @@
<div class="input-group">
<label for="realm_edit_topic_policy" class="dropdown-title">{{t "Who can edit the topic of any message" }}</label>
<select name="realm_edit_topic_policy" id="id_realm_edit_topic_policy" class="prop-element" data-setting-widget-type="number" {{#unless realm_allow_message_editing}}disabled{{/unless}}>
<select name="realm_edit_topic_policy" id="id_realm_edit_topic_policy" class="prop-element" data-setting-widget-type="number">
{{> dropdown_options_widget option_values=edit_topic_policy_values}}
</select>
</div>