js: Extract message_edit_history.js.

This commit is contained in:
Sharif Naas 2020-06-06 19:50:31 -07:00 committed by Tim Abbott
parent 4eaa62eaa6
commit b0a0ae215f
9 changed files with 74 additions and 68 deletions

View File

@ -231,6 +231,7 @@
"marked": false, "marked": false,
"md5": false, "md5": false,
"message_edit": false, "message_edit": false,
"message_edit_history": false,
"message_events": false, "message_events": false,
"message_fetch": false, "message_fetch": false,
"message_flags": false, "message_flags": false,

View File

@ -98,6 +98,7 @@ import "../stream_create.js";
import "../stream_edit.js"; import "../stream_edit.js";
import "../subs.js"; import "../subs.js";
import "../message_edit.js"; import "../message_edit.js";
import "../message_edit_history.js";
import "../condense.js"; import "../condense.js";
import "../resize.js"; import "../resize.js";
import "../list_render.js"; import "../list_render.js";

View File

@ -164,7 +164,7 @@ exports.initialize = function () {
const message_history_cancel_btn = $('#message-history-cancel'); const message_history_cancel_btn = $('#message-history-cancel');
if (page_params.realm_allow_edit_history) { if (page_params.realm_allow_edit_history) {
message_edit.show_history(message); message_edit_history.show_history(message);
message_history_cancel_btn.focus(); message_history_cancel_btn.focus();
} }
e.stopPropagation(); e.stopPropagation();

View File

@ -68,6 +68,7 @@ declare let local_message: any;
declare let localstorage: any; declare let localstorage: any;
declare let markdown: any; declare let markdown: any;
declare let message_edit: any; declare let message_edit: any;
declare let message_edit_history: any;
declare let message_events: any; declare let message_events: any;
declare let message_fetch: any; declare let message_fetch: any;
declare let message_flags: any; declare let message_flags: any;

View File

@ -1,5 +1,4 @@
const render_message_edit_form = require('../templates/message_edit_form.hbs'); const render_message_edit_form = require('../templates/message_edit_form.hbs');
const render_message_edit_history = require('../templates/message_edit_history.hbs');
const render_topic_edit_form = require('../templates/topic_edit_form.hbs'); const render_topic_edit_form = require('../templates/topic_edit_form.hbs');
const currently_editing_messages = new Map(); const currently_editing_messages = new Map();
@ -787,70 +786,6 @@ exports.edit_last_sent_message = function () {
}); });
}; };
exports.fetch_and_render_message_history = function (message) {
channel.get({
url: "/json/messages/" + message.id + "/history",
data: {message_id: JSON.stringify(message.id)},
success: function (data) {
const content_edit_history = [];
let prev_timestamp;
for (const [index, msg] of data.message_history.entries()) {
// Format timestamp nicely for display
const timestamp = timerender.get_full_time(msg.timestamp);
const item = {
timestamp: moment(timestamp).format("h:mm A"),
display_date: moment(timestamp).format("MMMM D, YYYY"),
};
if (msg.user_id) {
const person = people.get_by_user_id(msg.user_id);
item.edited_by = person.full_name;
}
if (index === 0) {
item.posted_or_edited = "Posted by";
item.body_to_render = msg.rendered_content;
prev_timestamp = timestamp;
item.show_date_row = true;
} else if (msg.prev_topic && msg.prev_content) {
item.posted_or_edited = "Edited by";
item.body_to_render = msg.content_html_diff;
item.show_date_row = !moment(timestamp).isSame(prev_timestamp, 'day');
item.topic_edited = true;
item.prev_topic = msg.prev_topic;
item.new_topic = msg.topic;
} else if (msg.prev_topic) {
item.posted_or_edited = "Topic edited by";
item.topic_edited = true;
item.prev_topic = msg.prev_topic;
item.new_topic = msg.topic;
} else {
// just a content edit
item.posted_or_edited = "Edited by";
item.body_to_render = msg.content_html_diff;
item.show_date_row = !moment(timestamp).isSame(prev_timestamp, 'day');
}
content_edit_history.push(item);
}
$('#message-history').attr('data-message-id', message.id);
$('#message-history').html(render_message_edit_history({
edited_messages: content_edit_history,
}));
},
error: function (xhr) {
ui_report.error(i18n.t("Error fetching message edit history"), xhr,
$("#message-history-error"));
},
});
};
exports.show_history = function (message) {
$('#message-history').html('');
$('#message-edit-history').modal("show");
exports.fetch_and_render_message_history(message);
};
function hide_delete_btn_show_spinner(deleting) { function hide_delete_btn_show_spinner(deleting) {
if (deleting) { if (deleting) {
$('do_delete_message_button').attr('disabled', 'disabled'); $('do_delete_message_button').attr('disabled', 'disabled');

View File

@ -0,0 +1,67 @@
const render_message_edit_history = require('../templates/message_edit_history.hbs');
exports.fetch_and_render_message_history = function (message) {
channel.get({
url: "/json/messages/" + message.id + "/history",
data: {message_id: JSON.stringify(message.id)},
success: function (data) {
const content_edit_history = [];
let prev_timestamp;
for (const [index, msg] of data.message_history.entries()) {
// Format timestamp nicely for display
const timestamp = timerender.get_full_time(msg.timestamp);
const item = {
timestamp: moment(timestamp).format("h:mm A"),
display_date: moment(timestamp).format("MMMM D, YYYY"),
};
if (msg.user_id) {
const person = people.get_by_user_id(msg.user_id);
item.edited_by = person.full_name;
}
if (index === 0) {
item.posted_or_edited = "Posted by";
item.body_to_render = msg.rendered_content;
prev_timestamp = timestamp;
item.show_date_row = true;
} else if (msg.prev_topic && msg.prev_content) {
item.posted_or_edited = "Edited by";
item.body_to_render = msg.content_html_diff;
item.show_date_row = !moment(timestamp).isSame(prev_timestamp, 'day');
item.topic_edited = true;
item.prev_topic = msg.prev_topic;
item.new_topic = msg.topic;
} else if (msg.prev_topic) {
item.posted_or_edited = "Topic edited by";
item.topic_edited = true;
item.prev_topic = msg.prev_topic;
item.new_topic = msg.topic;
} else {
// just a content edit
item.posted_or_edited = "Edited by";
item.body_to_render = msg.content_html_diff;
item.show_date_row = !moment(timestamp).isSame(prev_timestamp, 'day');
}
content_edit_history.push(item);
}
$('#message-history').attr('data-message-id', message.id);
$('#message-history').html(render_message_edit_history({
edited_messages: content_edit_history,
}));
},
error: function (xhr) {
ui_report.error(i18n.t("Error fetching message edit history"), xhr,
$("#message-history-error"));
},
});
};
exports.show_history = function (message) {
$('#message-history').html('');
$('#message-edit-history').modal("show");
exports.fetch_and_render_message_history(message);
};
window.message_edit_history = exports;

View File

@ -324,7 +324,7 @@ exports.update_messages = function update_messages(events) {
// Rerender "Message edit history" if it was open to the edited message. // Rerender "Message edit history" if it was open to the edited message.
if ($('#message-edit-history').hasClass('in') && if ($('#message-edit-history').hasClass('in') &&
msg.id === parseInt($('#message-history').attr('data-message-id'), 10)) { msg.id === parseInt($('#message-history').attr('data-message-id'), 10)) {
message_edit.fetch_and_render_message_history(msg); message_edit_history.fetch_and_render_message_history(msg);
} }
} }

View File

@ -1020,7 +1020,7 @@ exports.register_click_handlers = function () {
const message_history_cancel_btn = $('#message-history-cancel'); const message_history_cancel_btn = $('#message-history-cancel');
exports.hide_actions_popover(); exports.hide_actions_popover();
message_edit.show_history(message); message_edit_history.show_history(message);
message_history_cancel_btn.focus(); message_history_cancel_btn.focus();
e.stopPropagation(); e.stopPropagation();
e.preventDefault(); e.preventDefault();

View File

@ -72,6 +72,7 @@ EXEMPT_FILES = {
'static/js/local_message.js', 'static/js/local_message.js',
'static/js/localstorage.js', 'static/js/localstorage.js',
'static/js/message_edit.js', 'static/js/message_edit.js',
'static/js/message_edit_history.js',
'static/js/message_events.js', 'static/js/message_events.js',
'static/js/message_fetch.js', 'static/js/message_fetch.js',
'static/js/message_flags.js', 'static/js/message_flags.js',