mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-03 04:25:55 +01:00
Update chat frontend to better handle incoming messages
When an incoming message occurs from somebody who is new, a new chat contact is spawned and put into the contact list.
This commit is contained in:
@@ -49,8 +49,8 @@
|
||||
"nodebb-plugin-spam-be-gone": "0.4.2",
|
||||
"nodebb-rewards-essentials": "0.0.5",
|
||||
"nodebb-theme-lavender": "2.0.1",
|
||||
"nodebb-theme-persona": "3.0.13",
|
||||
"nodebb-theme-vanilla": "4.0.8",
|
||||
"nodebb-theme-persona": "3.0.14",
|
||||
"nodebb-theme-vanilla": "4.0.9",
|
||||
"nodebb-widget-essentials": "2.0.1",
|
||||
"npm": "^2.1.4",
|
||||
"passport": "^0.3.0",
|
||||
|
||||
@@ -155,7 +155,33 @@ define('forum/chats', ['components', 'string', 'sounds', 'forum/infinitescroll',
|
||||
data.message.newSet = lastSpeaker !== data.message.fromuid;
|
||||
Chats.parseMessage(data.message, onMessagesParsed);
|
||||
} else {
|
||||
$('.chats-list li[data-uid="' + data.withUid + '"]').addClass('unread');
|
||||
var contactEl = $('.chats-list li[data-uid="' + data.withUid + '"]'),
|
||||
userKey = data.withUid === data.message.fromuid ? 'fromUser' : 'toUser';
|
||||
|
||||
// Spawn a new contact if required
|
||||
if (!contactEl.length) {
|
||||
templates.parse('partials/chat_contact', {
|
||||
uid: data.withUid,
|
||||
username: data.message[userKey].username,
|
||||
status: data.message[userKey].status,
|
||||
picture: data.message[userKey].picture,
|
||||
teaser: {
|
||||
content: data.message.cleanedContent,
|
||||
timestampISO: new Date(Date.now()).toISOString()
|
||||
}
|
||||
}, function(html) {
|
||||
translator.translate(html, function(translatedHTML) {
|
||||
$('.chats-list').prepend(translatedHTML);
|
||||
|
||||
// Mark that contact list entry unread
|
||||
$('.chats-list li[data-uid="' + data.withUid + '"]').addClass('unread').find('.timeago').timeago();
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// Mark that contact list entry unread
|
||||
$('.chats-list li[data-uid="' + data.withUid + '"]').addClass('unread');
|
||||
}
|
||||
|
||||
app.alternatingTitle('[[modules:chat.user_has_messaged_you, ' + data.message.fromUser.username + ']]');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -145,7 +145,7 @@ var db = require('./database'),
|
||||
};
|
||||
|
||||
function getMessages(mids, fromuid, touid, isNew, callback) {
|
||||
user.getMultipleUserFields([fromuid, touid], ['uid', 'username', 'userslug', 'picture'], function(err, userData) {
|
||||
user.getMultipleUserFields([fromuid, touid], ['uid', 'username', 'userslug', 'picture', 'status'], function(err, userData) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
@@ -168,6 +168,7 @@ var db = require('./database'),
|
||||
|
||||
Messaging.parse(message.content, message.fromuid, fromuid, userData[1], userData[0], isNew, function(result) {
|
||||
message.content = result;
|
||||
message.cleanedContent = S(result).stripTags().decodeHTMLEntities().s;
|
||||
next(null, message);
|
||||
});
|
||||
}, next);
|
||||
|
||||
Reference in New Issue
Block a user