mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 03:26:04 +01:00
closes #2516
This commit is contained in:
@@ -58,7 +58,14 @@ define('forum/topic', [
|
||||
|
||||
$(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() {
|
||||
|
||||
@@ -13,7 +13,6 @@ define('forum/topic/events', [
|
||||
var Events = {};
|
||||
|
||||
var events = {
|
||||
'event:update_users_in_room': browsing.onUpdateUsersInRoom,
|
||||
'event:user_enter': browsing.onUserEnter,
|
||||
'event:user_leave': browsing.onUserLeave,
|
||||
'event:user_status_change': browsing.onUserStatusChange,
|
||||
|
||||
@@ -270,7 +270,7 @@ Sockets.isUsersOnline = function(uids, callback) {
|
||||
callback(null, uids.map(Sockets.isUserOnline));
|
||||
};
|
||||
|
||||
Sockets.updateRoomBrowsingText = function (roomName, selfUid) {
|
||||
Sockets.getUsersInRoom = function (uid, roomName, callback) {
|
||||
if (!roomName) {
|
||||
return;
|
||||
}
|
||||
@@ -278,22 +278,22 @@ Sockets.updateRoomBrowsingText = function (roomName, selfUid) {
|
||||
var uids = Sockets.getUidsInRoom(roomName);
|
||||
var total = uids.length;
|
||||
uids = uids.slice(0, 9);
|
||||
if (selfUid) {
|
||||
uids = [selfUid].concat(uids);
|
||||
if (uid) {
|
||||
uids = [uid].concat(uids);
|
||||
}
|
||||
if (!uids.length) {
|
||||
return;
|
||||
return callback(null, {users: [], total: 0 , room: roomName});
|
||||
}
|
||||
user.getMultipleUserFields(uids, ['uid', 'username', 'userslug', 'picture', 'status'], function(err, users) {
|
||||
if (err) {
|
||||
return;
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
users = users.filter(function(user) {
|
||||
return user && user.status !== 'offline';
|
||||
});
|
||||
|
||||
io.sockets.in(roomName).emit('event:update_users_in_room', {
|
||||
callback(null, {
|
||||
users: users,
|
||||
room: roomName,
|
||||
total: Math.max(0, total - uids.length)
|
||||
|
||||
@@ -70,9 +70,16 @@ SocketTopics.enter = function(socket, tid, callback) {
|
||||
if (!parseInt(tid, 10) || !socket.uid) {
|
||||
return;
|
||||
}
|
||||
|
||||
SocketTopics.markAsRead(socket, [tid], callback);
|
||||
websockets.updateRoomBrowsingText('topic_' + tid);
|
||||
async.parallel({
|
||||
markAsRead: function(next) {
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user