diff --git a/src/user/online.js b/src/user/online.js index b7c6b9d45a..94da8f6bc3 100644 --- a/src/user/online.js +++ b/src/user/online.js @@ -10,9 +10,9 @@ module.exports = function (User) { if (!(parseInt(uid, 10) > 0)) { return; } - const userData = await db.getObjectFields(`user:${uid}`, ['status', 'lastonline']); + const userData = await db.getObjectFields(`user:${uid}`, ['userslug', 'status', 'lastonline']); const now = Date.now(); - if (userData.status === 'offline' || now - parseInt(userData.lastonline, 10) < 300000) { + if (!userData.userslug || userData.status === 'offline' || now - parseInt(userData.lastonline, 10) < 300000) { return; } await User.setUserField(uid, 'lastonline', now); @@ -22,9 +22,12 @@ module.exports = function (User) { if (!(parseInt(uid, 10) > 0)) { return; } + const [exists, userOnlineTime] = await Promise.all([ + User.exists(uid), + db.sortedSetScore('users:online', uid), + ]); const now = Date.now(); - const userOnlineTime = await db.sortedSetScore('users:online', uid); - if (now - parseInt(userOnlineTime, 10) < 300000) { + if (!exists || (now - parseInt(userOnlineTime, 10) < 300000)) { return; } await User.onUserOnline(uid, now);