/* eslint-disable camelcase, max-len, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS101: Remove unnecessary use of Array.from * DS102: Remove unnecessary code created because of implicit returns * DS207: Consider shorter variations of null checks * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ let MessageFormatter module.exports = MessageFormatter = { formatMessageForClientSide(message) { if (message._id != null) { message.id = message._id.toString() delete message._id } const formattedMessage = { id: message.id, content: message.content, timestamp: message.timestamp, user_id: message.user_id } if (message.edited_at != null) { formattedMessage.edited_at = message.edited_at } return formattedMessage }, formatMessagesForClientSide(messages) { return Array.from(messages).map(message => this.formatMessageForClientSide(message) ) }, groupMessagesByThreads(rooms, messages) { let room, thread const rooms_by_id = {} for (room of Array.from(rooms)) { rooms_by_id[room._id.toString()] = room } const threads = {} const getThread = function(room) { const thread_id = room.thread_id.toString() if (threads[thread_id] != null) { return threads[thread_id] } else { const thread = { messages: [] } if (room.resolved != null) { thread.resolved = true thread.resolved_at = room.resolved.ts thread.resolved_by_user_id = room.resolved.user_id } threads[thread_id] = thread return thread } } for (let message of Array.from(messages)) { room = rooms_by_id[message.room_id.toString()] if (room != null) { thread = getThread(room) thread.messages.push( MessageFormatter.formatMessageForClientSide(message) ) } } for (let thread_id in threads) { thread = threads[thread_id] thread.messages.sort((a, b) => a.timestamp - b.timestamp) } return threads } }