mirror of
https://github.com/overleaf/overleaf.git
synced 2025-03-13 21:44:50 +00:00
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:
parent
3cbd460259
commit
bde79780a7
2 changed files with 100 additions and 84 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue