fix: allow guests to see their replies immediately

v1.18.x
Barış Soner Uşaklı 4 years ago
parent 7b39cf4bb7
commit a4fe4d3cf5

@ -8,6 +8,7 @@ const meta = require('../meta');
const apiHelpers = require('./helpers');
const doTopicAction = apiHelpers.doTopicAction;
const websockets = require('../socket.io');
const socketHelpers = require('../socket.io/helpers');
const topicsAPI = module.exports;
@ -72,7 +73,12 @@ topicsAPI.reply = async function (caller, data) {
};
user.updateOnlineUsers(caller.uid);
socketHelpers.emitToUids('event:new_post', result, [caller.uid]);
if (caller.uid) {
socketHelpers.emitToUids('event:new_post', result, [caller.uid]);
} else if (caller.uid === 0 && caller.sessionID) {
websockets.in('sess_' + caller.sessionID).emit('event:new_post', result);
}
socketHelpers.notifyNew(caller.uid, 'newPost', result);
return postObj[0];

@ -198,14 +198,15 @@ async function authorize(socket, callback) {
}
await cookieParserAsync(request);
const sessionData = await getSessionAsync(request.signedCookies[nconf.get('sessionKey')]);
const sid = request.signedCookies[nconf.get('sessionKey')];
const sessionData = await getSessionAsync(sid);
if (sessionData && sessionData.passport && sessionData.passport.user) {
request.session = sessionData;
socket.uid = parseInt(sessionData.passport.user, 10);
} else {
socket.uid = 0;
}
socket.sessionID = sid;
request.uid = socket.uid;
callback();
}

@ -7,6 +7,9 @@ var meta = require('../meta');
module.exports = function (User) {
User.updateLastOnlineTime = async function (uid) {
if (!(parseInt(uid, 10) > 0)) {
return;
}
const userData = await db.getObjectFields('user:' + uid, ['status', 'lastonline']);
const now = Date.now();
if (userData.status === 'offline' || now - parseInt(userData.lastonline, 10) < 300000) {
@ -16,6 +19,9 @@ module.exports = function (User) {
};
User.updateOnlineUsers = async function (uid) {
if (!(parseInt(uid, 10) > 0)) {
return;
}
const now = Date.now();
const userOnlineTime = await db.sortedSetScore('users:online', uid);
if (now - parseInt(userOnlineTime, 10) < 300000) {

Loading…
Cancel
Save