v1.18.x
barisusakli 11 years ago
parent cd135dda13
commit 4066607388

@ -75,10 +75,6 @@
"field": "profileImageDimension",
"value": 128
},
{
"field": "chatMessagesToDisplay",
"value": 50
},
{
"field": "requireEmailConfirmation",
"value": 0

@ -12,6 +12,10 @@
"chat.message-history": "Message History",
"chat.pop-out": "Pop out chat",
"chat.maximize": "Maximize",
"chat.yesterday": "Yesterday",
"chat.seven_days": "7 Days",
"chat.thirty_days": "30 Days",
"chat.three_months": "3 Months",
"composer.user_said_in": "%1 said in %2:",
"composer.user_said": "%1 said:",

@ -78,8 +78,28 @@ define('forum/chats', ['string', 'sounds', 'forum/infinitescroll'], function(S,
loadMoreRecentChats();
}
});
$('.expanded-chat [data-since]').on('click', function() {
var since = $(this).attr('data-since');
$('.expanded-chat [data-since]').removeClass('selected');
$(this).addClass('selected');
loadChatSince(since);
return false;
});
};
function loadChatSince(since) {
var uid = Chats.getRecipientUid();
if (!uid) {
return;
}
socket.emit('modules.chats.get', {touid: uid, since: since}, function(err, messages) {
var chatContent = $('.expanded-chat .chat-content');
chatContent.find('.chat-message').remove();
Chats.parseMessage(messages, onMessagesParsed);
});
}
Chats.addGlobalEventListeners = function() {
$(window).on('resize', Chats.resizeMainWindow);
$(window).on('mousemove keypress click', function() {
@ -93,6 +113,14 @@ define('forum/chats', ['string', 'sounds', 'forum/infinitescroll'], function(S,
});
};
function onMessagesParsed(html) {
var newMessage = $(html);
newMessage.insertBefore($('.user-typing'));
newMessage.find('span.timeago').timeago();
newMessage.find('img:not(".chat-user-image")').addClass('img-responsive');
Chats.scrollToBottom($('.expanded-chat .chat-content'));
}
Chats.addSocketListeners = function() {
socket.on('event:chats.receive', function(data) {
var typingNotifEl = $('.user-typing'),
@ -101,13 +129,7 @@ define('forum/chats', ['string', 'sounds', 'forum/infinitescroll'], function(S,
if (Chats.isCurrentChat(data.withUid)) {
newMessage = data.self === 0;
data.message.self = data.self;
Chats.parseMessage(data.message, function(html) {
var newMessage = $(html);
newMessage.insertBefore(typingNotifEl);
newMessage.find('span.timeago').timeago();
newMessage.find('img:not(".chat-user-image")').addClass('img-responsive');
Chats.scrollToBottom(containerEl);
});
Chats.parseMessage(data.message, onMessagesParsed);
} else {
$('.chats-list li[data-uid="' + data.withUid + '"]').addClass('unread');
app.alternatingTitle('[[modules:chat.user_has_messaged_you, ' + data.message.fromUser.username + ']]');

@ -193,9 +193,10 @@ define('chat', ['taskbar', 'string', 'sounds', 'forum/chats'], function(taskbar,
var totalHeight = chatModal.find('.modal-content').outerHeight() - chatModal.find('.modal-header').outerHeight();
var padding = parseInt(chatModal.find('.modal-body').css('padding-top'), 10) + parseInt(chatModal.find('.modal-body').css('padding-bottom'), 10);
var contentMargin = parseInt(chatModal.find('#chat-content').css('margin-top'), 10) + parseInt(chatModal.find('#chat-content').css('margin-bottom'), 10);
var sinceHeight = chatModal.find('.since-bar').outerHeight(true);
var inputGroupHeight = chatModal.find('.input-group').outerHeight();
chatModal.find('#chat-content').css('height', totalHeight - padding - contentMargin - inputGroupHeight);
chatModal.find('#chat-content').css('height', totalHeight - padding - contentMargin - sinceHeight - inputGroupHeight);
});
chatModal.find('#chat-with-name').html(username);
@ -220,6 +221,14 @@ define('chat', ['taskbar', 'string', 'sounds', 'forum/chats'], function(taskbar,
}
});
chatModal.find('[data-since]').on('click', function() {
var since = $(this).attr('data-since');
chatModal.find('[data-since]').removeClass('selected');
$(this).addClass('selected');
loadChatSince(chatModal, since);
return false;
});
addSendHandler(chatModal);
getChatMessages(chatModal, function() {
@ -279,7 +288,15 @@ define('chat', ['taskbar', 'string', 'sounds', 'forum/chats'], function(taskbar,
};
function getChatMessages(chatModal, callback) {
socket.emit('modules.chats.get', {touid: chatModal.attr('touid')}, function(err, messages) {
socket.emit('modules.chats.get', {touid: chatModal.attr('touid'), since: 'day'}, function(err, messages) {
module.appendChatMessage(chatModal, messages, callback);
});
}
function loadChatSince(chatModal, since, callback) {
socket.emit('modules.chats.get', {touid: chatModal.attr('touid'), since: since}, function(err, messages) {
var chatContent = chatModal.find('#chat-content');
chatContent.find('.chat-message').remove();
module.appendChatMessage(chatModal, messages, callback);
});
}

@ -535,7 +535,7 @@ accountsController.getChats = function(req, res, next) {
function(toUid, next) {
async.parallel({
toUser: async.apply(user.getUserFields, toUid, ['uid', 'username']),
messages: async.apply(messaging.getMessages, req.user.uid, toUid, false)
messages: async.apply(messaging.getMessages, req.user.uid, toUid, 'day', false)
}, next);
}
], function(err, data) {

@ -88,10 +88,18 @@ var db = require('./database'),
});
}
Messaging.getMessages = function(fromuid, touid, isNew, callback) {
Messaging.getMessages = function(fromuid, touid, since, isNew, callback) {
var uids = sortUids(fromuid, touid);
db.getSortedSetRevRange('messages:uid:' + uids[0] + ':to:' + uids[1], 0, (meta.config.chatMessagesToDisplay || 50) - 1, function(err, mids) {
var terms = {
day: 86400000,
week: 604800000,
month: 2592000000,
threemonths: 7776000000
};
since = terms[since] || terms['day'];
var count = parseInt(meta.config.chatMessageInboxSize, 10) || 250;
db.getSortedSetRevRangeByScore('messages:uid:' + uids[0] + ':to:' + uids[1], 0, count, Infinity, Date.now() - since, function(err, mids) {
if (err) {
return callback(err);
}

@ -166,7 +166,7 @@ SocketModules.chats.get = function(socket, data, callback) {
return callback(new Error('[[error:invalid-data]]'));
}
Messaging.getMessages(socket.uid, data.touid, false, callback);
Messaging.getMessages(socket.uid, data.touid, data.since, false, callback);
};
SocketModules.chats.send = function(socket, data, callback) {

Loading…
Cancel
Save