Merge pull request #1948 from overleaf/cmg-allow-array-archiving

Make checking for project.archived array-friendly

GitOrigin-RevId: 2902a12fb4611a5786d4b10feba534b1cd29668b
This commit is contained in:
Alasdair Smith
2019-08-09 09:54:27 +00:00
committed by sharelatex
parent c8140f9641
commit 3422c17dc4
7 changed files with 122 additions and 13 deletions
@@ -23,6 +23,7 @@ const projectDeleter = require('./ProjectDeleter')
const projectDuplicator = require('./ProjectDuplicator')
const projectCreationHandler = require('./ProjectCreationHandler')
const editorController = require('../Editor/EditorController')
const ProjectHelper = require('./ProjectHelper')
const metrics = require('metrics-sharelatex')
const { User } = require('../../models/User')
const TagsHandler = require('../Tags/TagsHandler')
@@ -289,8 +290,8 @@ module.exports = ProjectController = {
if (err != null) {
return next(err)
}
projects = ProjectController._buildProjectList(projects)
.filter(p => !p.archived)
projects = ProjectController._buildProjectList(projects, user_id)
.filter(p => !ProjectHelper.isArchived(p, user_id))
.filter(p => !p.isV1Project)
.map(p => ({ _id: p.id, name: p.name, accessLevel: p.accessLevel }))
@@ -405,6 +406,7 @@ module.exports = ProjectController = {
)
const projects = ProjectController._buildProjectList(
results.projects,
user_id,
results.v1Projects != null ? results.v1Projects.projects : undefined
)
const { user } = results
@@ -720,7 +722,7 @@ module.exports = ProjectController = {
)
},
_buildProjectList(allProjects, v1Projects) {
_buildProjectList(allProjects, userId, v1Projects) {
let project
if (v1Projects == null) {
v1Projects = []
@@ -738,7 +740,8 @@ module.exports = ProjectController = {
ProjectController._buildProjectViewModel(
project,
'owner',
Sources.OWNER
Sources.OWNER,
userId
)
)
}
@@ -748,7 +751,8 @@ module.exports = ProjectController = {
ProjectController._buildProjectViewModel(
project,
'readWrite',
Sources.INVITE
Sources.INVITE,
userId
)
)
}
@@ -757,7 +761,8 @@ module.exports = ProjectController = {
ProjectController._buildProjectViewModel(
project,
'readOnly',
Sources.INVITE
Sources.INVITE,
userId
)
)
}
@@ -776,7 +781,8 @@ module.exports = ProjectController = {
ProjectController._buildProjectViewModel(
project,
'readAndWrite',
Sources.TOKEN
Sources.TOKEN,
userId
)
)
}
@@ -790,7 +796,8 @@ module.exports = ProjectController = {
ProjectController._buildProjectViewModel(
project,
'readOnly',
Sources.TOKEN
Sources.TOKEN,
userId
)
)
}
@@ -799,7 +806,7 @@ module.exports = ProjectController = {
return projects
},
_buildProjectViewModel(project, accessLevel, source) {
_buildProjectViewModel(project, accessLevel, source, userId) {
TokenAccessHandler.protectTokens(project, accessLevel)
const model = {
id: project._id,
@@ -809,7 +816,7 @@ module.exports = ProjectController = {
publicAccessLevel: project.publicAccesLevel,
accessLevel,
source,
archived: !!project.archived,
archived: ProjectHelper.isArchived(project, userId),
owner_ref: project.owner_ref,
tokens: project.tokens,
isV1Project: false
@@ -18,12 +18,23 @@ const ENGINE_TO_COMPILER_MAP = {
xelatex: 'xelatex',
lualatex: 'lualatex'
}
const { ObjectId } = require('../../infrastructure/mongojs')
module.exports = ProjectHelper = {
compilerFromV1Engine(engine) {
return ENGINE_TO_COMPILER_MAP[engine]
},
isArchived(project, userId) {
userId = ObjectId(userId)
if (Array.isArray(project.archived)) {
return project.archived.find(id => id.equals(userId)) !== undefined
} else {
return project.archived
}
},
ensureNameIsUnique(nameList, name, suffixes, maxLength, callback) {
// create a set of all project names
if (suffixes == null) {
@@ -21,6 +21,7 @@
let ProjectLocator
const { Project } = require('../../models/Project')
const ProjectGetter = require('./ProjectGetter')
const ProjectHelper = require('./ProjectHelper')
const Errors = require('../Errors/Errors')
const _ = require('underscore')
const logger = require('logger-sharelatex')
@@ -319,7 +320,7 @@ module.exports = ProjectLocator = {
projects,
project =>
project.name.toLowerCase() === projectName &&
project.archived !== true
!ProjectHelper.isArchived(project, user_id)
)
logger.log(
{ user_id, projectName, totalProjects: projects.length, project },