overleaf/services/web/app/src/Features/Project/ProjectEntityRestoreHandler.js
Brian Gough 3c780c65e8 Merge pull request #5417 from overleaf/hb-restore-doc-from-admin
Restore soft deleted docs from admin

GitOrigin-RevId: 5c94539ae950c401225d2cfe7c0bc978ed258e22
2021-10-26 08:03:31 +00:00

35 lines
981 B
JavaScript

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,
},
}