fix: lastonline timestamps and display for guests

isekai-main
Barış Soner Uşaklı 3 years ago
parent 4b730df974
commit cc665fd614

@ -8,6 +8,7 @@ const pagination = require('../pagination');
const privileges = require('../privileges'); const privileges = require('../privileges');
const helpers = require('./helpers'); const helpers = require('./helpers');
const api = require('../api'); const api = require('../api');
const utils = require('../utils');
const usersController = module.exports; const usersController = module.exports;
@ -51,10 +52,10 @@ usersController.getOnlineUsers = async function (req, res) {
let hiddenCount = 0; let hiddenCount = 0;
if (!userData.isAdminOrGlobalMod) { if (!userData.isAdminOrGlobalMod) {
userData.users = userData.users.filter((user) => { userData.users = userData.users.filter((user) => {
if (user && user.status === 'offline') { if (user && user.userStatus === 'offline') {
hiddenCount += 1; hiddenCount += 1;
} }
return user && user.status !== 'offline'; return user && user.userStatus !== 'offline';
}); });
} }
@ -157,8 +158,22 @@ usersController.getUsersAndCount = async function (set, uid, start, stop) {
async function getUsers() { async function getUsers() {
if (set === 'users:online') { if (set === 'users:online') {
const count = parseInt(stop, 10) === -1 ? stop : stop - start + 1; const count = parseInt(stop, 10) === -1 ? stop : stop - start + 1;
const uids = await db.getSortedSetRevRangeByScore(set, start, count, '+inf', Date.now() - 86400000); const data = await db.getSortedSetRevRangeByScoreWithScores(set, start, count, '+inf', Date.now() - 86400000);
return await user.getUsers(uids, uid); const uids = data.map(d => d.value);
const scores = data.map(d => d.score);
const [userStatus, userData] = await Promise.all([
user.getUsersFields(uids, ['status']),
user.getUsers(uids, uid),
]);
userData.forEach((user, i) => {
if (user) {
user.lastonline = scores[i];
user.lastonlineISO = utils.toISOString(user.lastonline);
user.userStatus = userStatus[i].status || 'online';
}
});
return userData;
} }
return await user.getUsersFromSet(set, uid, start, stop); return await user.getUsersFromSet(set, uid, start, stop);
} }

Loading…
Cancel
Save