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');
|
$(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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user