MessageHttpController.coffee 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. logger = require "logger-sharelatex"
  2. metrics = require "../../metrics"
  3. MessageManager = require "./MessageManager"
  4. MessageFormatter = require "./MessageFormatter"
  5. RoomManager = require "../Rooms/RoomManager"
  6. module.exports = MessageHttpController =
  7. DEFAULT_MESSAGE_LIMIT: 50
  8. sendMessage: (req, res, next) ->
  9. {user_id, content} = req?.body
  10. {project_id} = req.params
  11. logger.log user_id: user_id, content: content, "new message recived"
  12. RoomManager.findOrCreateRoom project_id: project_id, (error, room) ->
  13. return next(error) if error?
  14. newMessageOpts =
  15. content: content
  16. room_id: room._id
  17. user_id: user_id
  18. timestamp: Date.now()
  19. MessageManager.createMessage newMessageOpts, (error, message) ->
  20. if err?
  21. logger.err err:error, user_id:user_id, "something went wrong with create message"
  22. return next(err)
  23. MessageManager.populateMessagesWithUsers [message], (error, messages) ->
  24. if error?
  25. logger.err err:error, user_id:user_id, "something went wrong populateMessagesWithUsers"
  26. return next("something went wrong")
  27. message = MessageFormatter.formatMessageForClientSide(messages[0])
  28. message.room =
  29. id: project_id
  30. res.send(201, message)
  31. getMessages: (req, res, next) ->
  32. {project_id} = req.params
  33. query = {}
  34. if req.query?.before?
  35. query.timestamp = $lt: parseInt(req.query.before, 10)
  36. if req.query?.limit?
  37. limit = parseInt(req.query.limit, 10)
  38. else
  39. limit = MessageHttpController.DEFAULT_MESSAGE_LIMIT
  40. options =
  41. order_by: "timestamp"
  42. sort_order: -1
  43. limit: limit
  44. logger.log options:options, "get message request recived"
  45. RoomManager.findOrCreateRoom project_id: project_id, (error, room) ->
  46. return next(error) if error?
  47. query.room_id = room._id
  48. MessageManager.getMessages query, options, (error, messages) ->
  49. if error?
  50. logger.err err:error, "something went getMessages"
  51. return next("something went wrong")
  52. MessageManager.populateMessagesWithUsers messages, (error, messages) ->
  53. if error?
  54. logger.err err:error, "something went populateMessagesWithUsers"
  55. return next("something went wrong")
  56. messages = MessageFormatter.formatMessagesForClientSide messages
  57. logger.log project_id: project_id, "got messages"
  58. res.send 200, messages