overleaf/services/web/app/src/Features/Project/ProjectEntityRestoreHandler.js

36 lines
981 B
JavaScript
Raw Normal View History

const { callbackify } = require('util')
const Path = require('path')
const ProjectEntityHandler = require('./ProjectEntityHandler')
const ProjectEntityUpdateHandler = require('./ProjectEntityUpdateHandler')
async function restoreDeletedDoc(projectId, docId, docName, userId) {
const deletedDoc = await ProjectEntityHandler.promises.getDoc(
projectId,
docId,
{ include_deleted: true }
)
const formattedTimestamp = new Date()
.toISOString()
.replace('T', '-')
.replace(/[^0-9-]/g, '')
const extension = Path.extname(docName)
const basename = Path.basename(docName, extension)
const deletedDocName = `${basename}-${formattedTimestamp}${extension}`
return await ProjectEntityUpdateHandler.promises.addDocWithRanges(
projectId,
null,
`${deletedDocName}`,
deletedDoc.lines,
deletedDoc.ranges,
userId
)
}
module.exports = {
restoreDeletedDoc: callbackify(restoreDeletedDoc),
promises: {
restoreDeletedDoc,
},
}