mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-31 21:21:03 -04:00
62 lines
2.2 KiB
CoffeeScript
62 lines
2.2 KiB
CoffeeScript
|
logger = require "logger-sharelatex"
|
||
|
metrics = require "../../metrics"
|
||
|
MessageManager = require "./MessageManager"
|
||
|
MessageFormatter = require "./MessageFormatter"
|
||
|
RoomManager = require "../Rooms/RoomManager"
|
||
|
|
||
|
module.exports = MessageHttpController =
|
||
|
DEFAULT_MESSAGE_LIMIT: 50
|
||
|
|
||
|
sendMessage: (req, res, next) ->
|
||
|
{user_id, content} = req?.body
|
||
|
{project_id} = req.params
|
||
|
|
||
|
logger.log user_id: user_id, content: content, "new message recived"
|
||
|
RoomManager.findOrCreateRoom project_id: project_id, (error, room) ->
|
||
|
return next(error) if error?
|
||
|
newMessageOpts =
|
||
|
content: content
|
||
|
room_id: room._id
|
||
|
user_id: user_id
|
||
|
timestamp: Date.now()
|
||
|
MessageManager.createMessage newMessageOpts, (error, message) ->
|
||
|
if err?
|
||
|
logger.err err:error, user_id:user_id, "something went wrong with create message"
|
||
|
return next(err)
|
||
|
MessageManager.populateMessagesWithUsers [message], (error, messages) ->
|
||
|
if error?
|
||
|
logger.err err:error, user_id:user_id, "something went wrong populateMessagesWithUsers"
|
||
|
return next("something went wrong")
|
||
|
message = MessageFormatter.formatMessageForClientSide(messages[0])
|
||
|
message.room =
|
||
|
id: project_id
|
||
|
res.send(201, message)
|
||
|
|
||
|
getMessages: (req, res, next) ->
|
||
|
{project_id} = req.params
|
||
|
query = {}
|
||
|
if req.query?.before?
|
||
|
query.timestamp = $lt: parseInt(req.query.before, 10)
|
||
|
if req.query?.limit?
|
||
|
limit = parseInt(req.query.limit, 10)
|
||
|
else
|
||
|
limit = MessageHttpController.DEFAULT_MESSAGE_LIMIT
|
||
|
options =
|
||
|
order_by: "timestamp"
|
||
|
sort_order: -1
|
||
|
limit: limit
|
||
|
logger.log options:options, "get message request recived"
|
||
|
RoomManager.findOrCreateRoom project_id: project_id, (error, room) ->
|
||
|
return next(error) if error?
|
||
|
query.room_id = room._id
|
||
|
MessageManager.getMessages query, options, (error, messages) ->
|
||
|
if error?
|
||
|
logger.err err:error, "something went getMessages"
|
||
|
return next("something went wrong")
|
||
|
MessageManager.populateMessagesWithUsers messages, (error, messages) ->
|
||
|
if error?
|
||
|
logger.err err:error, "something went populateMessagesWithUsers"
|
||
|
return next("something went wrong")
|
||
|
messages = MessageFormatter.formatMessagesForClientSide messages
|
||
|
logger.log project_id: project_id, "got messages"
|
||
|
res.send 200, messages
|