Просмотр исходного кода

Merge pull request #7307 from overleaf/jpa-notify-editor-restore-doc

[web] notify the editor after restoring a deleted doc

GitOrigin-RevId: 4bd316958827c83a56a82f9ff72f5ff803d32631
Jakob Ackermann 4 лет назад
Родитель
Сommit
64ffd66fa4

+ 4 - 2
services/web/app/src/Features/Project/ProjectEntityRestoreHandler.js

@@ -1,7 +1,7 @@
 const { callbackify } = require('util')
 const Path = require('path')
 const ProjectEntityHandler = require('./ProjectEntityHandler')
-const ProjectEntityUpdateHandler = require('./ProjectEntityUpdateHandler')
+const EditorController = require('../Editor/EditorController')
 
 // generate a new name based on the original, with an optional label.
 // e.g. origname-20210101-122345.tex          (default)
@@ -24,12 +24,14 @@ async function restoreDeletedDoc(projectId, docId, docName, userId) {
     { include_deleted: true }
   )
   const deletedDocName = generateRestoredName(docName)
-  return await ProjectEntityUpdateHandler.promises.addDocWithRanges(
+  // Create the doc and emit a websocket message.
+  return await EditorController.promises.addDocWithRanges(
     projectId,
     null,
     `${deletedDocName}`,
     deletedDoc.lines,
     deletedDoc.ranges,
+    null,
     userId
   )
 }

+ 1 - 1
services/web/app/src/Features/Project/ProjectEntityUpdateHandler.js

@@ -386,7 +386,7 @@ const ProjectEntityUpdateHandler = {
               if (error != null) {
                 return callback(error)
               }
-              callback(null, doc, folderId)
+              callback(null, doc, folderId || project.rootFolder[0]._id)
             }
           )
         }

+ 6 - 5
services/web/test/unit/src/Project/ProjectEntityRestoreHandlerTests.js

@@ -33,7 +33,7 @@ describe('ProjectEntityRestoreHandler', function () {
       },
     }
 
-    this.ProjectEntityUpdateHandler = {
+    this.EditorController = {
       promises: {
         addDocWithRanges: sinon.stub(),
       },
@@ -42,7 +42,7 @@ describe('ProjectEntityRestoreHandler', function () {
     this.ProjectEntityRestoreHandler = SandboxedModule.require(MODULE_PATH, {
       requires: {
         './ProjectEntityHandler': this.ProjectEntityHandler,
-        './ProjectEntityUpdateHandler': this.ProjectEntityUpdateHandler,
+        '../Editor/EditorController': this.EditorController,
       },
     })
   })
@@ -68,9 +68,9 @@ describe('ProjectEntityRestoreHandler', function () {
       ranges: this.ranges,
     })
 
-    this.ProjectEntityUpdateHandler.addDocWithRanges = sinon
+    this.EditorController.promises.addDocWithRanges = sinon
       .stub()
-      .yields(null, this.newDoc)
+      .resolves(this.newDoc)
 
     await this.ProjectEntityRestoreHandler.promises.restoreDeletedDoc(
       this.project._id,
@@ -82,13 +82,14 @@ describe('ProjectEntityRestoreHandler', function () {
     const docNameMatcher = new RegExp(docName + '-\\d{4}-\\d{2}-\\d{2}-\\d+')
 
     expect(
-      this.ProjectEntityUpdateHandler.promises.addDocWithRanges
+      this.EditorController.promises.addDocWithRanges
     ).to.have.been.calledWith(
       this.project._id,
       null,
       sinon.match(docNameMatcher),
       this.docLines,
       this.ranges,
+      null,
       this.user._id
     )
   })