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

getting the array of descendant pages when deleted completely.

Shunm634-source 3 лет назад
Родитель
Сommit
6dbd910914

+ 17 - 9
packages/app/src/server/service/page.ts

@@ -203,9 +203,12 @@ class PageService {
     });
 
     // delete completely
-    this.pageEvent.on('deleteCompletely', async(page, user) => {
+    this.pageEvent.on('deleteCompletely', async(page, descendantPages, user) => {
+      const isRecursively = descendantPages != null;
+      console.log('isRecursively?\n', isRecursively);
+      const action = isRecursively ? SUPPORTED_ACTION_TYPE.ACTION_PAGE_RECURSIVELY_DELETE_COMPLETELY : SUPPORTED_ACTION_TYPE.ACTION_PAGE_DELETE_COMPLETELY;
       try {
-        await this.createAndSendNotifications(page, null, user, SUPPORTED_ACTION_TYPE.ACTION_PAGE_DELETE_COMPLETELY);
+        await this.createAndSendNotifications(page, descendantPages, user, action);
       }
       catch (err) {
         logger.error(err);
@@ -1723,10 +1726,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 +1747,9 @@ class PageService {
        */
       this.deleteCompletelyRecursivelyMainOperation(page, user, options, pageOp._id);
     }
+    else if (!page.isEmpty && !preventEmitting) {
+      this.pageEvent.emit('deleteCompletely', page, user);
+    }
 
     return;
   }
@@ -1773,7 +1775,7 @@ class PageService {
     }
 
     if (!page.isEmpty && !preventEmitting) {
-      this.pageEvent.emit('deleteCompletely', page, user);
+      this.pageEvent.emit('deleteCompletely', page, null, user);
     }
 
     return;
@@ -1800,6 +1802,8 @@ class PageService {
     let count = 0;
     let nDeletedNonEmptyPages = 0; // used for updating descendantCount
 
+    const pageEvent = this.pageEvent;
+
     const deleteMultipleCompletely = this.deleteMultipleCompletely.bind(this);
     const writeStream = new Writable({
       objectMode: true,
@@ -1809,6 +1813,7 @@ class PageService {
         try {
           count += batch.length;
           await deleteMultipleCompletely(batch, user, options);
+          pageEvent.emit('deleteCompletely', targetPage, batch, user);
           logger.debug(`Adding pages progressing: (count=${count})`);
         }
         catch (err) {
@@ -2255,17 +2260,20 @@ class PageService {
       action,
     };
     const activity = await activityService.createByParameters(parameters);
+    console.log('What are the descendant pages\n', descendantPages);
     // Get user to be notified
-    const targetUsers = await activity.getNotificationTargetUsers();
+    let targetUsers = await activity.getNotificationTargetUsers();
     if (descendantPages != null) {
       const User = this.crowi.model('User');
       const targetDescendantsUsers = await Subscription.getSubscriptions(descendantPages);
       const descendantsUsers = targetDescendantsUsers.filter(item => (item.toString() !== user._id.toString()));
-      targetUsers.concat(await User.find({
+      console.log('Who are the target users?\n', descendantsUsers);
+      targetUsers = targetUsers.concat(await User.find({
         _id: { $in: descendantsUsers },
         status: User.STATUS_ACTIVE,
       }).distinct('_id'));
     }
+    console.log('Who are the target users?\n', targetUsers);
     // Create and send notifications
     await inAppNotificationService.upsertByActivity(targetUsers, activity, snapshot);
     await inAppNotificationService.emitSocketIo(targetUsers);

+ 2 - 2
packages/app/test/integration/service/page.test.js

@@ -644,7 +644,7 @@ describe('PageService', () => {
       expect(deleteCompletelyOperationSpy).toHaveBeenCalled();
       expect(deleteCompletelyDescendantsWithStreamSpy).not.toHaveBeenCalled();
 
-      expect(pageEventSpy).toHaveBeenCalledWith('deleteCompletely', parentForDeleteCompletely, testUser2);
+      expect(pageEventSpy).toHaveBeenCalledWith('deleteCompletely', parentForDeleteCompletely, null, testUser2);
     });
 
 
@@ -654,7 +654,7 @@ describe('PageService', () => {
       expect(deleteCompletelyOperationSpy).toHaveBeenCalled();
       expect(deleteCompletelyDescendantsWithStreamSpy).toHaveBeenCalled();
 
-      expect(pageEventSpy).toHaveBeenCalledWith('deleteCompletely', parentForDeleteCompletely, testUser2);
+      expect(pageEventSpy).toHaveBeenCalledWith('deleteCompletely', parentForDeleteCompletely, null, testUser2);
     });
   });