mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-22 16:30:34 +01:00
handle delete/restore/edit messages
This commit is contained in:
@@ -263,6 +263,12 @@ define('forum/chats/messages', [
|
||||
const self = parseInt(message.fromuid, 10) === parseInt(app.user.uid, 10);
|
||||
message.self = self ? 1 : 0;
|
||||
messages.parseMessage(message, function (html) {
|
||||
const parentEl = $(`[component="chat/message/parent"][data-parent-mid="${message.mid}"]`);
|
||||
if (parentEl.length) {
|
||||
parentEl.find('[component="chat/message/parent/content"]').html(
|
||||
html.find('[component="chat/message/body"]').html()
|
||||
);
|
||||
}
|
||||
const msgEl = components.get('chat/message', message.mid);
|
||||
if (msgEl.length) {
|
||||
msgEl.replaceWith(html);
|
||||
@@ -274,21 +280,36 @@ define('forum/chats/messages', [
|
||||
|
||||
function onChatMessageDeleted(messageId) {
|
||||
const msgEl = components.get('chat/message', messageId);
|
||||
const parentEl = $(`[component="chat/message/parent"][data-parent-mid="${messageId}"]`);
|
||||
const isSelf = parseInt(msgEl.attr('data-uid'), 10) === app.user.uid;
|
||||
const isParentSelf = parseInt(parentEl.attr('data-uid'), 10) === app.user.uid;
|
||||
msgEl.toggleClass('deleted', true);
|
||||
parentEl.toggleClass('deleted', true);
|
||||
if (!isSelf) {
|
||||
msgEl.find('[component="chat/message/body"]')
|
||||
.translateHtml('<p>[[modules:chat.message-deleted]]</p>');
|
||||
}
|
||||
if (!isParentSelf) {
|
||||
parentEl.find('[component="chat/message/parent/content"]')
|
||||
.translateHtml('<p>[[modules:chat.message-deleted]]</p>');
|
||||
}
|
||||
}
|
||||
|
||||
function onChatMessageRestored(message) {
|
||||
const msgEl = components.get('chat/message', message.messageId);
|
||||
const parentEl = $(`[component="chat/message/parent"][data-parent-mid="${message.messageId}"]`);
|
||||
const isSelf = parseInt(msgEl.attr('data-uid'), 10) === app.user.uid;
|
||||
const isParentSelf = parseInt(parentEl.attr('data-uid'), 10) === app.user.uid;
|
||||
msgEl.toggleClass('deleted', false);
|
||||
parentEl.toggleClass('deleted', false);
|
||||
if (!isParentSelf) {
|
||||
parentEl.find('[component="chat/message/parent/content"]')
|
||||
.translateHtml(message.content);
|
||||
}
|
||||
if (!isSelf) {
|
||||
msgEl.find('[component="chat/message/body"]')
|
||||
.translateHtml(message.content);
|
||||
messages.onMessagesAddedToDom(components.get('chat/message', message.messageId));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ module.exports = function (Messaging) {
|
||||
}
|
||||
parentMids = _.uniq(parentMids);
|
||||
const parentMessages = await Messaging.getMessagesFields(parentMids, [
|
||||
'fromuid', 'content', 'timestamp',
|
||||
'fromuid', 'content', 'timestamp', 'deleted',
|
||||
]);
|
||||
const parentUids = _.uniq(parentMessages.map(msg => msg && msg.fromuid));
|
||||
const usersMap = _.zipObject(
|
||||
@@ -142,6 +142,10 @@ module.exports = function (Messaging) {
|
||||
);
|
||||
|
||||
await Promise.all(parentMessages.map(async (parentMsg) => {
|
||||
if (parentMsg.deleted && parentMsg.fromuid !== parseInt(uid, 10)) {
|
||||
parentMsg.content = `<p>[[modules:chat.message-deleted]]</p>`;
|
||||
return;
|
||||
}
|
||||
const foundMsg = messages.find(msg => parseInt(msg.mid, 10) === parseInt(parentMsg.mid, 10));
|
||||
if (foundMsg) {
|
||||
parentMsg.content = foundMsg.content;
|
||||
|
||||
Reference in New Issue
Block a user