mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-25 10:10:08 +02:00
[web] Use constructor for ObjectId GitOrigin-RevId: 9eb8b377ea599605b72af237d1ab12f4d8287162
170 lines
4.1 KiB
JavaScript
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)
|
|
},
|
|
}
|