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:
Julian Lam
2015-09-16 18:14:33 -04:00
parent da09ce3e06
commit 2e3eef136f
3 changed files with 31 additions and 4 deletions

View File

@@ -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 + ']]');
}
});