mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 06:03:45 +01:00
[chat] clone comment threads when cloning project with ranges (#32852)
* [project-history] add best effort flush when cloning project * [web] update labels in clone project modal for admins * [project-history] do not shadow history flush failure * [web] fix accessible label for 'Add comment' button * [chat] clone comment threads when cloning project with ranges GitOrigin-RevId: ef30204c8a94b3d6204d56dcca2f62a46319996b
This commit is contained in:
@@ -4,6 +4,29 @@ export class MissingThreadError extends Error {}
|
||||
|
||||
export const GLOBAL_THREAD = 'GLOBAL'
|
||||
|
||||
/**
|
||||
* @param {string} sourceProjectId
|
||||
* @param {string} targetProjectId
|
||||
* @return {Promise<{from:ObjectId, to: ObjectId}[]>}
|
||||
*/
|
||||
export async function cloneThreads(sourceProjectId, targetProjectId) {
|
||||
sourceProjectId = new ObjectId(sourceProjectId)
|
||||
targetProjectId = new ObjectId(targetProjectId)
|
||||
const rooms = await db.rooms
|
||||
.find({ project_id: sourceProjectId, thread_id: { $exists: true } })
|
||||
.toArray()
|
||||
const mapping = []
|
||||
await db.rooms.insertMany(
|
||||
rooms.map(room => {
|
||||
const from = room._id
|
||||
const to = new ObjectId()
|
||||
mapping.push({ from, to })
|
||||
return { ...room, _id: to, project_id: targetProjectId }
|
||||
})
|
||||
)
|
||||
return mapping
|
||||
}
|
||||
|
||||
export async function findOrCreateThread(projectId, threadId) {
|
||||
let query, update
|
||||
projectId = new ObjectId(projectId.toString())
|
||||
|
||||
Reference in New Issue
Block a user