ソースを参照

Merge pull request #6097 from weseek/feat/create-notification-when-parentPage-are-comletelyDeleted

feat: create notification when parent page are comletely deleted
Yuki Takei 3 年 前
コミット
c93c294b96
1 ファイル変更16 行追加7 行削除
  1. 16 7
      packages/app/src/server/service/page.ts

+ 16 - 7
packages/app/src/server/service/page.ts

@@ -203,9 +203,11 @@ class PageService {
     });
 
     // delete completely
-    this.pageEvent.on('deleteCompletely', async(page, user) => {
+    this.pageEvent.on('deleteCompletely', async(page, user, descendantPages?) => {
+      const isRecursively = descendantPages != null;
+      const action = isRecursively ? SUPPORTED_ACTION_TYPE.ACTION_PAGE_RECURSIVELY_DELETE_COMPLETELY : SUPPORTED_ACTION_TYPE.ACTION_PAGE_DELETE_COMPLETELY;
       try {
-        await this.createAndSendNotifications(page, user, SUPPORTED_ACTION_TYPE.ACTION_PAGE_DELETE_COMPLETELY);
+        await this.createAndSendNotifications(page, user, action, descendantPages);
       }
       catch (err) {
         logger.error(err);
@@ -835,6 +837,7 @@ class PageService {
 
     const renameDescendants = this.renameDescendants.bind(this);
     const pageEvent = this.pageEvent;
+    let descendantPages: PageDocument[] = [];
     let count = 0;
     const writeStream = new Writable({
       objectMode: true,
@@ -844,7 +847,9 @@ class PageService {
           await renameDescendants(
             batch, user, options, pathRegExp, newPagePathPrefix, shouldUseV4Process,
           );
-          pageEvent.emit('rename', targetPage, user, batch);
+          descendantPages = descendantPages.concat(batch);
+          // pageEvent.emit('rename', targetPage, user, batch);
+          // console.log('What is the type of batch\n', batch);
           logger.debug(`Renaming pages progressing: (count=${count})`);
         }
         catch (err) {
@@ -869,6 +874,7 @@ class PageService {
       .pipe(writeStream);
 
     await streamToPromise(writeStream);
+    this.pageEvent.emit('rename', targetPage, user, descendantPages);
   }
 
   private async renameDescendantsWithStreamV4(targetPage, newPagePath, user, options = {}) {
@@ -1723,10 +1729,6 @@ class PageService {
     // delete leaf empty pages
     await Page.removeLeafEmptyPagesRecursively(page.parent);
 
-    if (!page.isEmpty && !preventEmitting) {
-      this.pageEvent.emit('deleteCompletely', page, user);
-    }
-
     if (isRecursively) {
       let pageOp;
       try {
@@ -1748,6 +1750,9 @@ class PageService {
        */
       this.deleteCompletelyRecursivelyMainOperation(page, user, options, pageOp._id);
     }
+    else if (!page.isEmpty && !preventEmitting) {
+      this.pageEvent.emit('deleteCompletely', page, user);
+    }
 
     return;
   }
@@ -1800,6 +1805,8 @@ class PageService {
     let count = 0;
     let nDeletedNonEmptyPages = 0; // used for updating descendantCount
 
+    let descendantPages: PageDocument[] = [];
+
     const deleteMultipleCompletely = this.deleteMultipleCompletely.bind(this);
     const writeStream = new Writable({
       objectMode: true,
@@ -1809,6 +1816,7 @@ class PageService {
         try {
           count += batch.length;
           await deleteMultipleCompletely(batch, user, options);
+          descendantPages = descendantPages.concat(batch);
           logger.debug(`Adding pages progressing: (count=${count})`);
         }
         catch (err) {
@@ -1829,6 +1837,7 @@ class PageService {
       .pipe(writeStream);
 
     await streamToPromise(writeStream);
+    this.pageEvent.emit('deleteCompletely', targetPage, user, descendantPages);
 
     return nDeletedNonEmptyPages;
   }