only update user list if its open

This commit is contained in:
Barış Soner Uşaklı
2023-07-14 13:01:41 -04:00
parent cfa00ece35
commit f0775651b9
5 changed files with 35 additions and 32 deletions

View File

@@ -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 };
};