mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-17 19:21:04 +01:00
only update user list if its open
This commit is contained in:
@@ -168,18 +168,21 @@ chatsAPI.mark = async (caller, data) => {
|
||||
chatsAPI.users = async (caller, data) => {
|
||||
const start = data.hasOwnProperty('start') ? data.start : 0;
|
||||
const stop = start + 39;
|
||||
const [isOwner, isUserInRoom, users] = await Promise.all([
|
||||
const io = require('../socket.io');
|
||||
const [isOwner, isUserInRoom, users, onlineUids] = await Promise.all([
|
||||
messaging.isRoomOwner(caller.uid, data.roomId),
|
||||
messaging.isUserInRoom(caller.uid, data.roomId),
|
||||
messaging.getUsersInRoomFromSet(
|
||||
`chat:room:${data.roomId}:uids:online`, data.roomId, start, stop, true
|
||||
),
|
||||
io.getUidsInRoom(`chat_room_${data.roomId}`),
|
||||
]);
|
||||
if (!isUserInRoom) {
|
||||
throw new Error('[[error:no-privileges]]');
|
||||
}
|
||||
users.forEach((user) => {
|
||||
user.canKick = isOwner && (parseInt(user.uid, 10) !== parseInt(caller.uid, 10));
|
||||
user.online = parseInt(user.uid, 10) === parseInt(caller.uid, 10) || onlineUids.includes(String(user.uid));
|
||||
});
|
||||
return { users };
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user