| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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
|