diff --git a/public/src/forum/footer.js b/public/src/forum/footer.js index 6eca0edbdf..3030bc53d4 100644 --- a/public/src/forum/footer.js +++ b/public/src/forum/footer.js @@ -132,6 +132,7 @@ }); } }); + notifList.addEventListener('click', function(e) { var target; switch(e.target.nodeName) { @@ -144,6 +145,7 @@ if (nid > 0) socket.emit('api:notifications.mark_read', nid); } }); + socket.on('event:new_notification', function() { document.querySelector('.notifications a i').className = 'icon-circle active'; app.alert({ @@ -161,13 +163,16 @@ var username = data.username; var fromuid = data.fromuid; var message = data.message; + var timestamp = data.timestamp; require(['chat'], function(chat) { - var chatModal = chat.createModalIfDoesntExist(username, fromuid); + var chatModal = chat.createModalIfDoesntExist(username, fromuid, function(created, modal) { + if(!created) + chat.appendChatMessage(modal, message, timestamp); + }); + chatModal.show(); chat.bringModalToTop(chatModal); - - chat.appendChatMessage(chatModal, message); }); }); diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 0b850b5889..f5f9702be3 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -13,7 +13,7 @@ define(['taskbar'], function(taskbar) { chatModal.css('zIndex', topZ + 1); } - module.createModalIfDoesntExist = function(username, touid) { + module.createModalIfDoesntExist = function(username, touid, callback) { var chatModal = $('#chat-modal-'+touid); if(!chatModal.length) { @@ -29,7 +29,7 @@ define(['taskbar'], function(taskbar) { }); chatModal.find('#chat-with-name').html(username); - chatModal.find('.close').on('click',function(e){ + chatModal.find('.close').on('click', function(e) { chatModal.hide(); taskbar.discard('chat', uuid); }); @@ -40,9 +40,15 @@ define(['taskbar'], function(taskbar) { addSendHandler(chatModal, touid); - getChatMessages(chatModal, touid); + getChatMessages(chatModal, touid, callback); + + taskbar.push('chat', chatModal.attr('UUID'), {title:'chat with '+username}); + return chatModal; } + if(callback) + callback(false, chatModal); + taskbar.push('chat', chatModal.attr('UUID'), {title:'chat with '+username}); return chatModal; } @@ -59,11 +65,14 @@ define(['taskbar'], function(taskbar) { taskbar.minimize('chat', uuid); } - function getChatMessages(chatModal, touid) { + function getChatMessages(chatModal, touid, callback) { socket.emit('getChatMessages', {touid:touid}, function(messages) { for(var i = 0; i