mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-11-03 04:25:55 +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