Files
Verso/services/web/app/src/Features/Metadata/MetaController.mjs
T
Andrew Rumble 4f02a85aa4 Update paths
GitOrigin-RevId: 399c594dd1bbf739d91874df6be3b70e57fe01e3
2025-11-06 09:05:57 +00:00

62 lines
1.6 KiB
JavaScript

import OError from '@overleaf/o-error'
import EditorRealTimeController from '../Editor/EditorRealTimeController.mjs'
import MetaHandler from './MetaHandler.mjs'
import logger from '@overleaf/logger'
import { expressify } from '@overleaf/promise-utils'
async function getMetadata(req, res) {
const { project_id: projectId } = req.params
logger.debug({ projectId }, 'getting all labels for project')
let projectMeta
try {
projectMeta = await MetaHandler.promises.getAllMetaForProject(projectId)
} catch (error) {
throw OError.tag(
error,
'[MetaController] error getting all labels from project',
{
project_id: projectId,
}
)
}
res.json({ projectId, projectMeta })
}
async function broadcastMetadataForDoc(req, res) {
const { project_id: projectId } = req.params
const { doc_id: docId } = req.params
const { broadcast } = req.body
logger.debug({ projectId, docId, broadcast }, 'getting labels for doc')
let docMeta
try {
docMeta = await MetaHandler.promises.getMetaForDoc(projectId, docId)
} catch (error) {
throw OError.tag(error, '[MetaController] error getting labels from doc', {
project_id: projectId,
doc_id: docId,
})
}
// default to broadcasting, unless explicitly disabled (for backwards compatibility)
if (broadcast === false) {
return res.json({ docId, meta: docMeta })
}
EditorRealTimeController.emitToRoom(projectId, 'broadcastDocMeta', {
docId,
meta: docMeta,
})
res.sendStatus(200) // 204?
}
export default {
getMetadata: expressify(getMetadata),
broadcastMetadataForDoc: expressify(broadcastMetadataForDoc),
}