mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-05 07:09:02 +02:00
f02f6475ac
GitOrigin-RevId: a9474c8f36e8b287de4dd8fda29bc082001444ac
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
import { callbackify } from 'node:util'
|
|
import Path from 'node:path'
|
|
import ProjectEntityHandler from './ProjectEntityHandler.mjs'
|
|
import EditorController from '../Editor/EditorController.mjs'
|
|
|
|
// generate a new name based on the original, with an optional label.
|
|
// e.g. origname-20210101-122345.tex (default)
|
|
// origname-restored-20210101-122345.tex (label="restored")
|
|
function generateRestoredName(docName, label) {
|
|
const formattedTimestamp = new Date()
|
|
.toISOString()
|
|
.replace('T', '-')
|
|
.replace(/[^0-9-]/g, '')
|
|
const extension = Path.extname(docName)
|
|
const basename =
|
|
Path.basename(docName, extension) + (label ? `-${label}` : '')
|
|
return `${basename}-${formattedTimestamp}${extension}`
|
|
}
|
|
|
|
async function restoreDeletedDoc(projectId, docId, docName, userId) {
|
|
const deletedDoc = await ProjectEntityHandler.promises.getDoc(
|
|
projectId,
|
|
docId,
|
|
{ include_deleted: true }
|
|
)
|
|
const deletedDocName = generateRestoredName(docName)
|
|
// Create the doc and emit a websocket message.
|
|
return await EditorController.promises.addDocWithRanges(
|
|
projectId,
|
|
null,
|
|
`${deletedDocName}`,
|
|
deletedDoc.lines,
|
|
deletedDoc.ranges,
|
|
null,
|
|
userId
|
|
)
|
|
}
|
|
|
|
export default {
|
|
restoreDeletedDoc: callbackify(restoreDeletedDoc),
|
|
generateRestoredName,
|
|
promises: {
|
|
restoreDeletedDoc,
|
|
},
|
|
}
|