فهرست منبع

catch results

itizawa 5 سال پیش
والد
کامیت
fba1446d47
2فایلهای تغییر یافته به همراه13 افزوده شده و 9 حذف شده
  1. 6 1
      src/server/routes/apiv3/pages.js
  2. 7 8
      src/server/service/user-notification/index.js

+ 6 - 1
src/server/routes/apiv3/pages.js

@@ -79,7 +79,12 @@ module.exports = (crowi) => {
     // user notification
     if (isSlackEnabled && userNotificationService != null) {
       try {
-        await userNotificationService.fire(createdPage, req.user, slackChannels, 'create', false);
+        const results = await userNotificationService.fire(createdPage, req.user, slackChannels, 'create', false);
+        results.forEach((result) => {
+          if (result.status === 'rejected') {
+            logger.error('Create user notification failed', result.reason);
+          }
+        });
       }
       catch (err) {
         logger.error('Create user notification failed', err);

+ 7 - 8
src/server/service/user-notification/index.js

@@ -1,5 +1,3 @@
-const logger = require('@alias/logger')('growi:service:UserNotificationService');
-
 const toArrayFromCsv = require('@commons/util/to-array-from-csv');
 
 /**
@@ -41,14 +39,15 @@ class UserNotificationService {
     // "dev,slacktest" => [dev,slacktest]
     const slackChannels = toArrayFromCsv(slackChannelsStr);
 
-    const promises = slackChannels.map((chan) => {
-      return slack.postPage(page, user, chan, updateOrCreate, previousRevision);
+    const promises = slackChannels.map(async(chan) => {
+      const res = await slack.postPage(page, user, chan, updateOrCreate, previousRevision);
+      if (res.status !== 'ok') {
+        throw new Error(`fail to send slack notification to #${chan} channel`);
+      }
+      return res;
     });
 
-    Promise.allSettled(promises)
-      .catch((err) => {
-        logger.error('Error occured in sending slack notification: ', err);
-      });
+    return Promise.allSettled(promises);
   }
 
 }