| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- const { expressify } = require('@overleaf/promise-utils')
- const ChatApiHandler = require('./ChatApiHandler')
- const EditorRealTimeController = require('../Editor/EditorRealTimeController')
- const SessionManager = require('../Authentication/SessionManager')
- const UserInfoManager = require('../User/UserInfoManager')
- const UserInfoController = require('../User/UserInfoController')
- const ChatManager = require('./ChatManager')
- async function sendMessage(req, res) {
- const { project_id: projectId } = req.params
- const { content, client_id: clientId } = req.body
- const userId = SessionManager.getLoggedInUserId(req.session)
- if (userId == null) {
- throw new Error('no logged-in user')
- }
- const message = await ChatApiHandler.promises.sendGlobalMessage(
- projectId,
- userId,
- content
- )
- const user = await UserInfoManager.promises.getPersonalInfo(message.user_id)
- message.user = UserInfoController.formatPersonalInfo(user)
- message.clientId = clientId
- EditorRealTimeController.emitToRoom(projectId, 'new-chat-message', message)
- res.sendStatus(204)
- }
- async function getMessages(req, res) {
- const { project_id: projectId } = req.params
- const { query } = req
- const messages = await ChatApiHandler.promises.getGlobalMessages(
- projectId,
- query.limit,
- query.before
- )
- await ChatManager.promises.injectUserInfoIntoThreads({ global: { messages } })
- res.json(messages)
- }
- module.exports = {
- sendMessage: expressify(sendMessage),
- getMessages: expressify(getMessages),
- }
|