[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:
Jakob Ackermann
2026-04-17 08:07:03 +00:00
committed by Copybot
parent 933c0c2943
commit 6117feef1b
9 changed files with 177 additions and 73 deletions
@@ -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())