Files
overleaf-cep/services/web/app/src/Features/Chat/ChatController.mjs
Antoine Clausse 6b663a8509 Merge pull request #28544 from overleaf/ac-some-web-esm-migration-4
[web] Convert some Features files to ES modules (part 4)

GitOrigin-RevId: cf11a7584e39c4d4de08e2f924240e488a4066c4
2025-09-24 08:05:58 +00:00

55 lines
1.6 KiB
JavaScript

import { expressify } from '@overleaf/promise-utils'
import Modules from '../../infrastructure/Modules.js'
import ChatApiHandler from './ChatApiHandler.js'
import EditorRealTimeController from '../Editor/EditorRealTimeController.js'
import SessionManager from '../Authentication/SessionManager.js'
import UserInfoManager from '../User/UserInfoManager.js'
import UserInfoController from '../User/UserInfoController.js'
import ChatManager from './ChatManager.mjs'
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)
await Modules.promises.hooks.fire('chatMessageSent', {
projectId,
userId,
messageId: message.id,
})
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)
}
export default {
sendMessage: expressify(sendMessage),
getMessages: expressify(getMessages),
}