Files
overleaf-cep/services/web/app/src/Features/Project/ProjectCollabratecDetailsHandler.js
Mathias Jakobsen c371732e6e Merge pull request #16186 from overleaf/mj-mongo-object-id
[web] Use constructor for ObjectId

GitOrigin-RevId: 9eb8b377ea599605b72af237d1ab12f4d8287162
2023-12-19 09:04:02 +00:00

170 lines
4.1 KiB
JavaScript

/* eslint-disable
n/handle-callback-err,
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
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
let ProjectCollabratecDetailsHandler
const { ObjectId } = require('mongodb')
const { Project } = require('../../models/Project')
module.exports = ProjectCollabratecDetailsHandler = {
initializeCollabratecProject(
projectId,
userId,
collabratecDocumentId,
collabratecPrivategroupId,
callback
) {
if (callback == null) {
callback = function () {}
}
ProjectCollabratecDetailsHandler.setCollabratecUsers(
projectId,
[
{
user_id: userId,
collabratec_document_id: collabratecDocumentId,
collabratec_privategroup_id: collabratecPrivategroupId,
},
],
callback
)
},
isLinkedCollabratecUserProject(projectId, userId, callback) {
if (callback == null) {
callback = function () {}
}
try {
projectId = new ObjectId(projectId)
userId = new ObjectId(userId)
} catch (error) {
const err = error
return callback(err)
}
const query = {
_id: projectId,
collabratecUsers: {
$elemMatch: {
user_id: userId,
},
},
}
Project.findOne(query, { _id: 1 }, function (err, project) {
if (err != null) {
callback(err)
}
callback(null, project != null)
})
},
linkCollabratecUserProject(
projectId,
userId,
collabratecDocumentId,
callback
) {
if (callback == null) {
callback = function () {}
}
try {
projectId = new ObjectId(projectId)
userId = new ObjectId(userId)
} catch (error) {
const err = error
return callback(err)
}
const query = {
_id: projectId,
collabratecUsers: {
$not: {
$elemMatch: {
collabratec_document_id: collabratecDocumentId,
user_id: userId,
},
},
},
}
const update = {
$push: {
collabratecUsers: {
collabratec_document_id: collabratecDocumentId,
user_id: userId,
},
},
}
Project.updateOne(query, update, callback)
},
setCollabratecUsers(projectId, collabratecUsers, callback) {
let err
if (callback == null) {
callback = function () {}
}
try {
projectId = new ObjectId(projectId)
} catch (error) {
err = error
return callback(err)
}
if (!Array.isArray(collabratecUsers)) {
callback(new Error('collabratec_users must be array'))
}
for (const collabratecUser of Array.from(collabratecUsers)) {
try {
collabratecUser.user_id = new ObjectId(collabratecUser.user_id)
} catch (error1) {
err = error1
return callback(err)
}
}
const update = { $set: { collabratecUsers } }
Project.updateOne({ _id: projectId }, update, callback)
},
unlinkCollabratecUserProject(projectId, userId, callback) {
if (callback == null) {
callback = function () {}
}
try {
projectId = new ObjectId(projectId)
userId = new ObjectId(userId)
} catch (error) {
const err = error
return callback(err)
}
const query = { _id: projectId }
const update = {
$pull: {
collabratecUsers: {
user_id: userId,
},
},
}
Project.updateOne(query, update, callback)
},
updateCollabratecUserIds(oldUserId, newUserId, callback) {
if (callback == null) {
callback = function () {}
}
try {
oldUserId = new ObjectId(oldUserId)
newUserId = new ObjectId(newUserId)
} catch (error) {
const err = error
return callback(err)
}
const query = { 'collabratecUsers.user_id': oldUserId }
const update = { $set: { 'collabratecUsers.$.user_id': newUserId } }
Project.updateMany(query, update, callback)
},
}