mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36: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 apiHelpers = require('./helpers');
|
||||||
const doTopicAction = apiHelpers.doTopicAction;
|
const doTopicAction = apiHelpers.doTopicAction;
|
||||||
|
|
||||||
|
const websockets = require('../socket.io');
|
||||||
const socketHelpers = require('../socket.io/helpers');
|
const socketHelpers = require('../socket.io/helpers');
|
||||||
|
|
||||||
const topicsAPI = module.exports;
|
const topicsAPI = module.exports;
|
||||||
@@ -72,7 +73,12 @@ topicsAPI.reply = async function (caller, data) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
user.updateOnlineUsers(caller.uid);
|
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);
|
socketHelpers.notifyNew(caller.uid, 'newPost', result);
|
||||||
|
|
||||||
return postObj[0];
|
return postObj[0];
|
||||||
|
|||||||
@@ -198,14 +198,15 @@ async function authorize(socket, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
await cookieParserAsync(request);
|
await cookieParserAsync(request);
|
||||||
|
const sid = request.signedCookies[nconf.get('sessionKey')];
|
||||||
const sessionData = await getSessionAsync(request.signedCookies[nconf.get('sessionKey')]);
|
const sessionData = await getSessionAsync(sid);
|
||||||
if (sessionData && sessionData.passport && sessionData.passport.user) {
|
if (sessionData && sessionData.passport && sessionData.passport.user) {
|
||||||
request.session = sessionData;
|
request.session = sessionData;
|
||||||
socket.uid = parseInt(sessionData.passport.user, 10);
|
socket.uid = parseInt(sessionData.passport.user, 10);
|
||||||
} else {
|
} else {
|
||||||
socket.uid = 0;
|
socket.uid = 0;
|
||||||
}
|
}
|
||||||
|
socket.sessionID = sid;
|
||||||
request.uid = socket.uid;
|
request.uid = socket.uid;
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ var meta = require('../meta');
|
|||||||
|
|
||||||
module.exports = function (User) {
|
module.exports = function (User) {
|
||||||
User.updateLastOnlineTime = async function (uid) {
|
User.updateLastOnlineTime = async function (uid) {
|
||||||
|
if (!(parseInt(uid, 10) > 0)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const userData = await db.getObjectFields('user:' + uid, ['status', 'lastonline']);
|
const userData = await db.getObjectFields('user:' + uid, ['status', 'lastonline']);
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
if (userData.status === 'offline' || now - parseInt(userData.lastonline, 10) < 300000) {
|
if (userData.status === 'offline' || now - parseInt(userData.lastonline, 10) < 300000) {
|
||||||
@@ -16,6 +19,9 @@ module.exports = function (User) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
User.updateOnlineUsers = async function (uid) {
|
User.updateOnlineUsers = async function (uid) {
|
||||||
|
if (!(parseInt(uid, 10) > 0)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
const userOnlineTime = await db.sortedSetScore('users:online', uid);
|
const userOnlineTime = await db.sortedSetScore('users:online', uid);
|
||||||
if (now - parseInt(userOnlineTime, 10) < 300000) {
|
if (now - parseInt(userOnlineTime, 10) < 300000) {
|
||||||
|
|||||||
Reference in New Issue
Block a user