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);
|
const self = parseInt(message.fromuid, 10) === parseInt(app.user.uid, 10);
|
||||||
message.self = self ? 1 : 0;
|
message.self = self ? 1 : 0;
|
||||||
messages.parseMessage(message, function (html) {
|
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);
|
const msgEl = components.get('chat/message', message.mid);
|
||||||
if (msgEl.length) {
|
if (msgEl.length) {
|
||||||
msgEl.replaceWith(html);
|
msgEl.replaceWith(html);
|
||||||
@@ -274,21 +280,36 @@ define('forum/chats/messages', [
|
|||||||
|
|
||||||
function onChatMessageDeleted(messageId) {
|
function onChatMessageDeleted(messageId) {
|
||||||
const msgEl = components.get('chat/message', 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 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);
|
msgEl.toggleClass('deleted', true);
|
||||||
|
parentEl.toggleClass('deleted', true);
|
||||||
if (!isSelf) {
|
if (!isSelf) {
|
||||||
msgEl.find('[component="chat/message/body"]')
|
msgEl.find('[component="chat/message/body"]')
|
||||||
.translateHtml('<p>[[modules:chat.message-deleted]]</p>');
|
.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) {
|
function onChatMessageRestored(message) {
|
||||||
const msgEl = components.get('chat/message', message.messageId);
|
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 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);
|
msgEl.toggleClass('deleted', false);
|
||||||
|
parentEl.toggleClass('deleted', false);
|
||||||
|
if (!isParentSelf) {
|
||||||
|
parentEl.find('[component="chat/message/parent/content"]')
|
||||||
|
.translateHtml(message.content);
|
||||||
|
}
|
||||||
if (!isSelf) {
|
if (!isSelf) {
|
||||||
msgEl.find('[component="chat/message/body"]')
|
msgEl.find('[component="chat/message/body"]')
|
||||||
.translateHtml(message.content);
|
.translateHtml(message.content);
|
||||||
|
messages.onMessagesAddedToDom(components.get('chat/message', message.messageId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ module.exports = function (Messaging) {
|
|||||||
}
|
}
|
||||||
parentMids = _.uniq(parentMids);
|
parentMids = _.uniq(parentMids);
|
||||||
const parentMessages = await Messaging.getMessagesFields(parentMids, [
|
const parentMessages = await Messaging.getMessagesFields(parentMids, [
|
||||||
'fromuid', 'content', 'timestamp',
|
'fromuid', 'content', 'timestamp', 'deleted',
|
||||||
]);
|
]);
|
||||||
const parentUids = _.uniq(parentMessages.map(msg => msg && msg.fromuid));
|
const parentUids = _.uniq(parentMessages.map(msg => msg && msg.fromuid));
|
||||||
const usersMap = _.zipObject(
|
const usersMap = _.zipObject(
|
||||||
@@ -142,6 +142,10 @@ module.exports = function (Messaging) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
await Promise.all(parentMessages.map(async (parentMsg) => {
|
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));
|
const foundMsg = messages.find(msg => parseInt(msg.mid, 10) === parseInt(parentMsg.mid, 10));
|
||||||
if (foundMsg) {
|
if (foundMsg) {
|
||||||
parentMsg.content = foundMsg.content;
|
parentMsg.content = foundMsg.content;
|
||||||
|
|||||||
Reference in New Issue
Block a user