v1.18.x
barisusakli 11 years ago
parent 348d05d3d1
commit 2e04501224

@ -58,7 +58,14 @@ define('forum/topic', [
$(window).trigger('action:topic.loaded'); $(window).trigger('action:topic.loaded');
socket.emit('topics.enter', tid); if (app.user.uid) {
socket.emit('topics.enter', tid, function(err, data) {
if (err) {
return app.alertError(err.message);
}
browsing.onUpdateUsersInRoom(data);
});
}
}; };
Topic.toTop = function() { Topic.toTop = function() {

@ -13,7 +13,6 @@ define('forum/topic/events', [
var Events = {}; var Events = {};
var events = { var events = {
'event:update_users_in_room': browsing.onUpdateUsersInRoom,
'event:user_enter': browsing.onUserEnter, 'event:user_enter': browsing.onUserEnter,
'event:user_leave': browsing.onUserLeave, 'event:user_leave': browsing.onUserLeave,
'event:user_status_change': browsing.onUserStatusChange, 'event:user_status_change': browsing.onUserStatusChange,

@ -270,7 +270,7 @@ Sockets.isUsersOnline = function(uids, callback) {
callback(null, uids.map(Sockets.isUserOnline)); callback(null, uids.map(Sockets.isUserOnline));
}; };
Sockets.updateRoomBrowsingText = function (roomName, selfUid) { Sockets.getUsersInRoom = function (uid, roomName, callback) {
if (!roomName) { if (!roomName) {
return; return;
} }
@ -278,22 +278,22 @@ Sockets.updateRoomBrowsingText = function (roomName, selfUid) {
var uids = Sockets.getUidsInRoom(roomName); var uids = Sockets.getUidsInRoom(roomName);
var total = uids.length; var total = uids.length;
uids = uids.slice(0, 9); uids = uids.slice(0, 9);
if (selfUid) { if (uid) {
uids = [selfUid].concat(uids); uids = [uid].concat(uids);
} }
if (!uids.length) { if (!uids.length) {
return; return callback(null, {users: [], total: 0 , room: roomName});
} }
user.getMultipleUserFields(uids, ['uid', 'username', 'userslug', 'picture', 'status'], function(err, users) { user.getMultipleUserFields(uids, ['uid', 'username', 'userslug', 'picture', 'status'], function(err, users) {
if (err) { if (err) {
return; return callback(err);
} }
users = users.filter(function(user) { users = users.filter(function(user) {
return user && user.status !== 'offline'; return user && user.status !== 'offline';
}); });
io.sockets.in(roomName).emit('event:update_users_in_room', { callback(null, {
users: users, users: users,
room: roomName, room: roomName,
total: Math.max(0, total - uids.length) total: Math.max(0, total - uids.length)

@ -70,9 +70,16 @@ SocketTopics.enter = function(socket, tid, callback) {
if (!parseInt(tid, 10) || !socket.uid) { if (!parseInt(tid, 10) || !socket.uid) {
return; return;
} }
async.parallel({
SocketTopics.markAsRead(socket, [tid], callback); markAsRead: function(next) {
websockets.updateRoomBrowsingText('topic_' + tid); SocketTopics.markAsRead(socket, [tid], next);
},
users: function(next) {
websockets.getUsersInRoom(socket.uid, 'topic_' + tid, next);
}
}, function(err, result) {
callback(err, result ? result.users : null);
});
}; };
SocketTopics.postcount = function(socket, tid, callback) { SocketTopics.postcount = function(socket, tid, callback) {

Loading…
Cancel
Save