فهرست منبع

Merge pull request #4255 from overleaf/em-active-projects-expire-2

Create the deleted project record later when deleting a project

GitOrigin-RevId: 2ed21fb4623f4f27be0ed6ca8132cd81aa0a7ced
Eric Mc Sween 5 سال پیش
والد
کامیت
a966a5f9d7
1فایلهای تغییر یافته به همراه30 افزوده شده و 30 حذف شده
  1. 30 30
      services/web/app/src/Features/Project/ProjectDeleter.js

+ 30 - 30
services/web/app/src/Features/Project/ProjectDeleter.js

@@ -205,6 +205,36 @@ async function deleteProject(projectId, options = {}) {
       throw new Errors.NotFoundError('project not found')
     }
 
+    await DocumentUpdaterHandler.promises.flushProjectToMongoAndDelete(
+      projectId
+    )
+
+    try {
+      // OPTIMIZATION: flush docs out of mongo
+      await DocstoreManager.promises.archiveProject(projectId)
+    } catch (err) {
+      // It is OK to fail here, the docs will get hard-deleted eventually after
+      //  the grace-period for soft-deleted projects has passed.
+      logger.warn(
+        { projectId, err },
+        'failed archiving doc via docstore as part of project soft-deletion'
+      )
+    }
+
+    const memberIds = await CollaboratorsGetter.promises.getMemberIds(projectId)
+
+    // fire these jobs in the background
+    for (const memberId of memberIds) {
+      TagsHandler.promises
+        .removeProjectFromAllTags(memberId, projectId)
+        .catch(err => {
+          logger.err(
+            { err, memberId, projectId },
+            'failed to remove project from tags'
+          )
+        })
+    }
+
     const deleterData = {
       deletedAt: new Date(),
       deleterId:
@@ -239,36 +269,6 @@ async function deleteProject(projectId, options = {}) {
       { upsert: true }
     )
 
-    await DocumentUpdaterHandler.promises.flushProjectToMongoAndDelete(
-      projectId
-    )
-
-    try {
-      // OPTIMIZATION: flush docs out of mongo
-      await DocstoreManager.promises.archiveProject(projectId)
-    } catch (err) {
-      // It is OK to fail here, the docs will get hard-deleted eventually after
-      //  the grace-period for soft-deleted projects has passed.
-      logger.warn(
-        { projectId, err },
-        'failed archiving doc via docstore as part of project soft-deletion'
-      )
-    }
-
-    const memberIds = await CollaboratorsGetter.promises.getMemberIds(projectId)
-
-    // fire these jobs in the background
-    for (const memberId of memberIds) {
-      TagsHandler.promises
-        .removeProjectFromAllTags(memberId, projectId)
-        .catch(err => {
-          logger.err(
-            { err, memberId, projectId },
-            'failed to remove project from tags'
-          )
-        })
-    }
-
     await Project.deleteOne({ _id: projectId }).exec()
   } catch (err) {
     logger.warn({ err }, 'problem deleting project')