Merge pull request #28833 from overleaf/ii-await-project-helper

[web] Promisify ProjectHelper

GitOrigin-RevId: a31457228c335ba1d70acdfa4671effce30c8014
This commit is contained in:
ilkin-overleaf
2025-10-09 08:07:22 +00:00
committed by Copybot
parent 22b38d02b0
commit 9cc6fd9d82
2 changed files with 8 additions and 11 deletions
@@ -158,7 +158,7 @@ async function generateUniqueName(userId, name, suffixes = []) {
_.flattenDeep(_.values(allUsersProjectNames)),
'name'
)
const uniqueName = await ProjectHelper.promises.ensureNameIsUnique(
const uniqueName = ProjectHelper.ensureNameIsUnique(
projectNameList,
name,
suffixes,
@@ -1,7 +1,6 @@
// @ts-check
const { ObjectId } = require('mongodb-legacy')
const _ = require('lodash')
const { promisify } = require('util')
const Settings = require('@overleaf/settings')
/**
@@ -20,11 +19,8 @@ module.exports = {
isArchived,
isTrashed,
isArchivedOrTrashed,
ensureNameIsUnique,
getAllowedImagesForUser,
promises: {
ensureNameIsUnique: promisify(ensureNameIsUnique),
},
ensureNameIsUnique,
}
function compilerFromV1Engine(engine) {
@@ -67,8 +63,9 @@ function isArchivedOrTrashed(project, userId) {
* @param {string} name
* @param {string[]} suffixes
* @param {number} maxLength
* @returns string
*/
function ensureNameIsUnique(nameList, name, suffixes, maxLength, callback) {
function ensureNameIsUnique(nameList, name, suffixes, maxLength) {
// create a set of all project names
if (suffixes == null) {
suffixes = []
@@ -77,21 +74,21 @@ function ensureNameIsUnique(nameList, name, suffixes, maxLength, callback) {
const isUnique = x => !allNames.has(x)
// check if the supplied name is already unique
if (isUnique(name)) {
return callback(null, name)
return name
}
// the name already exists, try adding the user-supplied suffixes to generate a unique name
for (const suffix of suffixes) {
const candidateName = _addSuffixToProjectName(name, suffix, maxLength)
if (isUnique(candidateName)) {
return callback(null, candidateName)
return candidateName
}
}
// if there are no (more) suffixes, use a numeric one
const uniqueName = _addNumericSuffixToProjectName(name, allNames, maxLength)
if (uniqueName != null) {
callback(null, uniqueName)
return uniqueName
} else {
callback(new Error(`Failed to generate a unique name for: ${name}`))
throw new Error(`Failed to generate a unique name for: ${name}`)
}
}