MessageFormatter.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /* eslint-disable
  2. camelcase,
  3. max-len,
  4. */
  5. // TODO: This file was created by bulk-decaffeinate.
  6. // Fix any style issues and re-enable lint.
  7. /*
  8. * decaffeinate suggestions:
  9. * DS101: Remove unnecessary use of Array.from
  10. * DS102: Remove unnecessary code created because of implicit returns
  11. * DS207: Consider shorter variations of null checks
  12. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  13. */
  14. let MessageFormatter;
  15. module.exports = (MessageFormatter = {
  16. formatMessageForClientSide(message) {
  17. if (message._id != null) {
  18. message.id = message._id.toString();
  19. delete message._id;
  20. }
  21. const formattedMessage = {
  22. id: message.id,
  23. content: message.content,
  24. timestamp: message.timestamp,
  25. user_id: message.user_id
  26. };
  27. if (message.edited_at != null) {
  28. formattedMessage.edited_at = message.edited_at;
  29. }
  30. return formattedMessage;
  31. },
  32. formatMessagesForClientSide(messages) {
  33. return (Array.from(messages).map((message) => this.formatMessageForClientSide(message)));
  34. },
  35. groupMessagesByThreads(rooms, messages) {
  36. let room, thread;
  37. const rooms_by_id = {};
  38. for (room of Array.from(rooms)) {
  39. rooms_by_id[room._id.toString()] = room;
  40. }
  41. const threads = {};
  42. const getThread = function(room) {
  43. const thread_id = room.thread_id.toString();
  44. if (threads[thread_id] != null) {
  45. return threads[thread_id];
  46. } else {
  47. const thread = { messages: [] };
  48. if (room.resolved != null) {
  49. thread.resolved = true;
  50. thread.resolved_at = room.resolved.ts;
  51. thread.resolved_by_user_id = room.resolved.user_id;
  52. }
  53. threads[thread_id] = thread;
  54. return thread;
  55. }
  56. };
  57. for (let message of Array.from(messages)) {
  58. room = rooms_by_id[message.room_id.toString()];
  59. if (room != null) {
  60. thread = getThread(room);
  61. thread.messages.push(MessageFormatter.formatMessageForClientSide(message));
  62. }
  63. }
  64. for (let thread_id in threads) {
  65. thread = threads[thread_id];
  66. thread.messages.sort((a,b) => a.timestamp - b.timestamp);
  67. }
  68. return threads;
  69. }
  70. });