mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
message-edit-history: Show original channel/topic for move only history.
If the organization only allows viewing message move history, in the message edit history overlay for the initial message, we display the original topic and channel of the message instead of the original message content. This way the overlay content is consistent with the organization setting for viewing message edit history, and if the message content has been edited, that original content is not viewable to other users.
This commit is contained in:
committed by
Tim Abbott
parent
e6d71cad1f
commit
4fd3bb8aa5
@@ -28,6 +28,7 @@ import * as ui_report from "./ui_report.ts";
|
|||||||
import * as util from "./util.ts";
|
import * as util from "./util.ts";
|
||||||
|
|
||||||
type EditHistoryEntry = {
|
type EditHistoryEntry = {
|
||||||
|
initial_entry_for_move_history: boolean;
|
||||||
edited_at_time: string;
|
edited_at_time: string;
|
||||||
edited_by_notice: string;
|
edited_by_notice: string;
|
||||||
timestamp: number; // require to set data-message-id for overlay message row
|
timestamp: number; // require to set data-message-id for overlay message row
|
||||||
@@ -113,6 +114,9 @@ function hide_loading_indicator(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function fetch_and_render_message_history(message: Message): void {
|
export function fetch_and_render_message_history(message: Message): void {
|
||||||
|
const move_history_only =
|
||||||
|
realm.realm_message_edit_history_visibility_policy ===
|
||||||
|
message_edit_history_visibility_policy_values.moves_only.code;
|
||||||
$("#message-edit-history-overlay-container").html(render_message_history_overlay());
|
$("#message-edit-history-overlay-container").html(render_message_history_overlay());
|
||||||
open_overlay();
|
open_overlay();
|
||||||
show_loading_indicator();
|
show_loading_indicator();
|
||||||
@@ -149,10 +153,19 @@ export function fetch_and_render_message_history(message: Message): void {
|
|||||||
let stream_changed;
|
let stream_changed;
|
||||||
let prev_stream;
|
let prev_stream;
|
||||||
let prev_stream_id;
|
let prev_stream_id;
|
||||||
|
let initial_entry_for_move_history = false;
|
||||||
|
|
||||||
if (index === 0) {
|
if (index === 0) {
|
||||||
edited_by_notice = $t({defaultMessage: "Posted by {full_name}"}, {full_name});
|
edited_by_notice = $t({defaultMessage: "Posted by {full_name}"}, {full_name});
|
||||||
body_to_render = msg.rendered_content;
|
if (move_history_only) {
|
||||||
|
// If message history is limited to moves only, then we
|
||||||
|
// display the original topic and channel for the message.
|
||||||
|
initial_entry_for_move_history = true;
|
||||||
|
new_topic_display_name = util.get_final_topic_display_name(msg.topic);
|
||||||
|
} else {
|
||||||
|
// Otherwise, we display the original message content.
|
||||||
|
body_to_render = msg.rendered_content;
|
||||||
|
}
|
||||||
} else if (msg.prev_topic !== undefined && msg.prev_content) {
|
} else if (msg.prev_topic !== undefined && msg.prev_content) {
|
||||||
edited_by_notice = $t({defaultMessage: "Edited by {full_name}"}, {full_name});
|
edited_by_notice = $t({defaultMessage: "Edited by {full_name}"}, {full_name});
|
||||||
body_to_render = msg.content_html_diff;
|
body_to_render = msg.content_html_diff;
|
||||||
@@ -195,6 +208,7 @@ export function fetch_and_render_message_history(message: Message): void {
|
|||||||
body_to_render = msg.content_html_diff;
|
body_to_render = msg.content_html_diff;
|
||||||
}
|
}
|
||||||
const item: EditHistoryEntry = {
|
const item: EditHistoryEntry = {
|
||||||
|
initial_entry_for_move_history,
|
||||||
edited_at_time,
|
edited_at_time,
|
||||||
edited_by_notice,
|
edited_by_notice,
|
||||||
timestamp: msg.timestamp,
|
timestamp: msg.timestamp,
|
||||||
@@ -228,6 +242,7 @@ export function fetch_and_render_message_history(message: Message): void {
|
|||||||
// entries in reverse chronological order.
|
// entries in reverse chronological order.
|
||||||
if (message.is_stream) {
|
if (message.is_stream) {
|
||||||
// Start with the message's current location.
|
// Start with the message's current location.
|
||||||
|
let stream_display_name: string = get_display_stream_name(message.stream_id);
|
||||||
let stream_color: string = get_color(message.stream_id);
|
let stream_color: string = get_color(message.stream_id);
|
||||||
let recipient_bar_color: string = get_recipient_bar_color(stream_color);
|
let recipient_bar_color: string = get_recipient_bar_color(stream_color);
|
||||||
for (const edit_history_entry of content_edit_history.toReversed()) {
|
for (const edit_history_entry of content_edit_history.toReversed()) {
|
||||||
@@ -238,10 +253,18 @@ export function fetch_and_render_message_history(message: Message): void {
|
|||||||
// prior to this event, the message must have been in
|
// prior to this event, the message must have been in
|
||||||
// edit_history_event.prev_stream_id; fetch its color.
|
// edit_history_event.prev_stream_id; fetch its color.
|
||||||
assert(edit_history_entry.prev_stream_id !== undefined);
|
assert(edit_history_entry.prev_stream_id !== undefined);
|
||||||
|
stream_display_name = get_display_stream_name(
|
||||||
|
edit_history_entry.prev_stream_id,
|
||||||
|
);
|
||||||
stream_color = get_color(edit_history_entry.prev_stream_id);
|
stream_color = get_color(edit_history_entry.prev_stream_id);
|
||||||
recipient_bar_color = get_recipient_bar_color(stream_color);
|
recipient_bar_color = get_recipient_bar_color(stream_color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (move_history_only) {
|
||||||
|
// If message history is limited to moves only, then we
|
||||||
|
// display the original topic and channel for the message.
|
||||||
|
content_edit_history[0]!.new_stream = stream_display_name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const rendered_list_html = render_message_edit_history({
|
const rendered_list_html = render_message_edit_history({
|
||||||
edited_messages: content_edit_history,
|
edited_messages: content_edit_history,
|
||||||
|
@@ -27,6 +27,14 @@
|
|||||||
<div class="message_row{{#unless is_stream}} private-message{{/unless}}" role="listitem">
|
<div class="message_row{{#unless is_stream}} private-message{{/unless}}" role="listitem">
|
||||||
<div class="messagebox">
|
<div class="messagebox">
|
||||||
<div class="messagebox-content">
|
<div class="messagebox-content">
|
||||||
|
{{#if initial_entry_for_move_history}}
|
||||||
|
<div class="message_content message_edit_history_content">
|
||||||
|
<p>{{t "Channel" }}: <span class="highlight_text_inserted">{{ new_stream }}</span></p>
|
||||||
|
<p>{{t "Topic" }}:
|
||||||
|
<span class="highlight_text_inserted {{#if is_empty_string_new_topic}}empty-topic-display{{/if}}">{{ new_topic_display_name }}</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
{{#if stream_changed}}
|
{{#if stream_changed}}
|
||||||
<div class="message_content message_edit_history_content">
|
<div class="message_content message_edit_history_content">
|
||||||
<p>{{t "Channel" }}: <span class="highlight_text_inserted">{{ new_stream }}</span>
|
<p>{{t "Channel" }}: <span class="highlight_text_inserted">{{ new_stream }}</span>
|
||||||
@@ -47,6 +55,7 @@
|
|||||||
{{ rendered_markdown body_to_render}}
|
{{ rendered_markdown body_to_render}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user