mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: allow guests to see their replies immediately
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user