Merge pull request #10971 from overleaf/em-flush-docupdater-on-rename

Flush project in docupdater after a rename

GitOrigin-RevId: f08e722e9eb65e281965fe2603f8e97024edb8e9
This commit is contained in:
Eric Mc Sween 2023-01-09 07:54:36 -05:00 committed by Copybot
parent 3cbd460259
commit bde79780a7
2 changed files with 100 additions and 84 deletions

View file

@ -1246,44 +1246,51 @@ const ProjectEntityUpdateHandler = {
return callback(new Error('No entityType set'))
}
entityType = entityType.toLowerCase()
ProjectEntityMongoUpdateHandler.moveEntity(
projectId,
entityId,
destFolderId,
entityType,
(err, project, startPath, endPath, rev, changes) => {
if (err != null) {
return callback(err)
}
const projectHistoryId =
project.overleaf &&
project.overleaf.history &&
project.overleaf.history.id
// do not wait
TpdsUpdateSender.promises
.moveEntity({
projectId,
projectName: project.name,
startPath,
endPath,
rev,
entityId,
entityType,
folderId: destFolderId,
})
.catch(err => {
logger.error({ err }, 'error sending tpds update')
})
DocumentUpdaterHandler.updateProjectStructure(
projectId,
projectHistoryId,
userId,
changes,
source,
callback
)
DocumentUpdaterHandler.flushProjectToMongo(projectId, err => {
if (err) {
return callback(err)
}
)
ProjectEntityMongoUpdateHandler.moveEntity(
projectId,
entityId,
destFolderId,
entityType,
(err, project, startPath, endPath, rev, changes) => {
if (err != null) {
return callback(err)
}
const projectHistoryId =
project.overleaf &&
project.overleaf.history &&
project.overleaf.history.id
TpdsUpdateSender.moveEntity(
{
projectId,
projectName: project.name,
startPath,
endPath,
rev,
entityId,
entityType,
folderId: destFolderId,
},
err => {
if (err) {
logger.error({ err }, 'error sending tpds update')
}
DocumentUpdaterHandler.updateProjectStructure(
projectId,
projectHistoryId,
userId,
changes,
source,
callback
)
}
)
}
)
})
}),
renameEntity: wrapWithLock(function (
@ -1305,44 +1312,51 @@ const ProjectEntityUpdateHandler = {
}
entityType = entityType.toLowerCase()
ProjectEntityMongoUpdateHandler.renameEntity(
projectId,
entityId,
entityType,
newName,
(err, project, startPath, endPath, rev, changes) => {
if (err != null) {
return callback(err)
}
const projectHistoryId =
project.overleaf &&
project.overleaf.history &&
project.overleaf.history.id
// do not wait
TpdsUpdateSender.promises
.moveEntity({
projectId,
projectName: project.name,
startPath,
endPath,
rev,
entityId,
entityType,
folderId: null, // this means the folder has not changed
})
.catch(err => {
logger.error({ err }, 'error sending tpds update')
})
DocumentUpdaterHandler.updateProjectStructure(
projectId,
projectHistoryId,
userId,
changes,
source,
callback
)
DocumentUpdaterHandler.flushProjectToMongo(projectId, err => {
if (err) {
return callback(err)
}
)
ProjectEntityMongoUpdateHandler.renameEntity(
projectId,
entityId,
entityType,
newName,
(err, project, startPath, endPath, rev, changes) => {
if (err != null) {
return callback(err)
}
const projectHistoryId =
project.overleaf &&
project.overleaf.history &&
project.overleaf.history.id
TpdsUpdateSender.moveEntity(
{
projectId,
projectName: project.name,
startPath,
endPath,
rev,
entityId,
entityType,
folderId: null, // this means the folder has not changed
},
err => {
if (err) {
logger.error({ err }, 'error sending tpds update')
}
DocumentUpdaterHandler.updateProjectStructure(
projectId,
projectHistoryId,
userId,
changes,
source,
callback
)
}
)
}
)
})
}),
// This doesn't directly update project structure but we need to take the lock

View file

@ -76,6 +76,7 @@ describe('ProjectEntityUpdateHandler', function () {
}
this.DocumentUpdaterHandler = {
flushDocToMongo: sinon.stub().yields(),
flushProjectToMongo: sinon.stub().yields(),
updateProjectStructure: sinon.stub().yields(),
setDocument: sinon.stub(),
resyncProjectHistory: sinon.stub().yields(),
@ -128,10 +129,7 @@ describe('ProjectEntityUpdateHandler', function () {
addFile: sinon.stub().yields(),
addDoc: sinon.stub(),
deleteEntity: sinon.stub().yields(),
moveEntity: sinon.stub(),
promises: {
moveEntity: sinon.stub().resolves(),
},
moveEntity: sinon.stub().yields(),
}
this.FileStoreHandler = {
copyFile: sinon.stub(),
@ -1786,7 +1784,7 @@ describe('ProjectEntityUpdateHandler', function () {
})
it('notifies tpds', function () {
this.TpdsUpdateSender.promises.moveEntity
this.TpdsUpdateSender.moveEntity
.calledWith({
projectId,
projectName: this.project_name,
@ -1807,8 +1805,7 @@ describe('ProjectEntityUpdateHandler', function () {
projectHistoryId,
userId,
this.changes,
this.source,
this.callback
this.source
)
.should.equal(true)
})
@ -1850,7 +1847,7 @@ describe('ProjectEntityUpdateHandler', function () {
})
it('notifies tpds', function () {
this.TpdsUpdateSender.promises.moveEntity
this.TpdsUpdateSender.moveEntity
.calledWith({
projectId,
projectName: this.project_name,
@ -1864,6 +1861,12 @@ describe('ProjectEntityUpdateHandler', function () {
.should.equal(true)
})
it('flushes the project in doc updater', function () {
this.DocumentUpdaterHandler.flushProjectToMongo.should.have.been.calledWith(
projectId
)
})
it('sends the changes in project structure to the doc updater', function () {
this.DocumentUpdaterHandler.updateProjectStructure
.calledWith(
@ -1871,8 +1874,7 @@ describe('ProjectEntityUpdateHandler', function () {
projectHistoryId,
userId,
this.changes,
this.source,
this.callback
this.source
)
.should.equal(true)
})