diff --git a/src/controllers/composer.js b/src/controllers/composer.js index 356cae1f57..93263d2ed0 100644 --- a/src/controllers/composer.js +++ b/src/controllers/composer.js @@ -45,6 +45,7 @@ exports.post = function (req, res) { req: req, timestamp: Date.now(), content: body.content, + fromQueue: false, }; req.body.noscript = 'true'; diff --git a/src/posts/queue.js b/src/posts/queue.js index e811eaaa16..d861792b30 100644 --- a/src/posts/queue.js +++ b/src/posts/queue.js @@ -127,6 +127,7 @@ module.exports = function (Posts) { return null; } data.data = JSON.parse(data.data); + data.data.fromQueue = true; return data; } diff --git a/src/socket.io/helpers.js b/src/socket.io/helpers.js index b808c73929..7fd30e750a 100644 --- a/src/socket.io/helpers.js +++ b/src/socket.io/helpers.js @@ -18,6 +18,13 @@ var batch = require('../batch'); var SocketHelpers = module.exports; +SocketHelpers.setDefaultPostData = function (data, socket) { + data.uid = socket.uid; + data.req = websockets.reqFromSocket(socket); + data.timestamp = Date.now(); + data.fromQueue = false; +}; + SocketHelpers.notifyNew = function (uid, type, result) { async.waterfall([ function (next) { diff --git a/src/socket.io/posts.js b/src/socket.io/posts.js index a67f99297a..19833df6b7 100644 --- a/src/socket.io/posts.js +++ b/src/socket.io/posts.js @@ -9,7 +9,6 @@ var meta = require('../meta'); var topics = require('../topics'); const categories = require('../categories'); var user = require('../user'); -var websockets = require('./index'); var socketHelpers = require('./helpers'); var utils = require('../utils'); @@ -29,9 +28,7 @@ SocketPosts.reply = function (socket, data, callback) { return callback(new Error('[[error:invalid-data]]')); } - data.uid = socket.uid; - data.req = websockets.reqFromSocket(socket); - data.timestamp = Date.now(); + socketHelpers.setDefaultPostData(data, socket); async.waterfall([ function (next) { diff --git a/src/socket.io/topics.js b/src/socket.io/topics.js index 9bf60d00de..7c84109046 100644 --- a/src/socket.io/topics.js +++ b/src/socket.io/topics.js @@ -4,7 +4,6 @@ var async = require('async'); var topics = require('../topics'); var posts = require('../posts'); -var websockets = require('./index'); var user = require('../user'); var meta = require('../meta'); var apiController = require('../controllers/api'); @@ -25,9 +24,7 @@ SocketTopics.post = function (socket, data, callback) { return callback(new Error('[[error:invalid-data]]')); } - data.uid = socket.uid; - data.req = websockets.reqFromSocket(socket); - data.timestamp = Date.now(); + socketHelpers.setDefaultPostData(data, socket); async.waterfall([ function (next) { diff --git a/src/topics/create.js b/src/topics/create.js index 21ed17fe79..703b27703c 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -88,7 +88,9 @@ module.exports = function (Topics) { } await guestHandleValid(data); - await user.isReadyToPost(data.uid, data.cid); + if (!data.fromQueue) { + await user.isReadyToPost(data.uid, data.cid); + } const filteredData = await plugins.fireHook('filter:topic.post', data); data = filteredData; const tid = await Topics.create(data); @@ -159,7 +161,9 @@ module.exports = function (Topics) { } await guestHandleValid(data); - await user.isReadyToPost(uid, data.cid); + if (!data.fromQueue) { + await user.isReadyToPost(uid, data.cid); + } await plugins.fireHook('filter:topic.reply', data); if (data.content) { data.content = utils.rtrim(data.content);