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

Merge pull request #1182 from weseek/fix/1177-user-notification-procedure2

Fix/1177 user notification procedure2
Yuki Takei 6 лет назад
Родитель
Сommit
afac13c752
3 измененных файлов с 32 добавлено и 21 удалено
  1. 13 13
      src/server/routes/comment.js
  2. 16 5
      src/server/routes/page.js
  3. 3 3
      src/server/util/slack.js

+ 13 - 13
src/server/routes/comment.js

@@ -140,22 +140,22 @@ module.exports = function(crowi, app) {
     // slack notification
     if (slackNotificationForm.isSlackEnabled) {
       const user = await User.findUserByUsername(req.user.username);
-      const channels = slackNotificationForm.slackChannels;
+      const channelsStr = slackNotificationForm.slackChannels || null;
 
-      if (channels) {
-        page.updateSlackChannel(channels).catch((err) => {
-          logger.error('Error occured in updating slack channels: ', err);
-        });
+      page.updateSlackChannel(channelsStr).catch((err) => {
+        logger.error('Error occured in updating slack channels: ', err);
+      });
 
-        const promises = channels.split(',').map((chan) => {
-          return crowi.slack.postComment(createdComment, user, chan, path);
-        });
+      const channels = channelsStr != null ? channelsStr.split(',') : [null];
 
-        Promise.all(promises)
-          .catch((err) => {
-            logger.error('Error occured in sending slack notification: ', err);
-          });
-      }
+      const promises = channels.map((chan) => {
+        return crowi.slack.postComment(createdComment, user, chan, path);
+      });
+
+      Promise.all(promises)
+        .catch((err) => {
+          logger.error('Error occured in sending slack notification: ', err);
+        });
     }
   };
 

+ 16 - 5
src/server/routes/page.js

@@ -100,14 +100,25 @@ module.exports = function(crowi, app) {
 
   // user notification
   // TODO create '/service/user-notification' module
-  async function notifyToSlackByUser(page, user, slackChannels, updateOrCreate, previousRevision) {
-    await page.updateSlackChannel(slackChannels)
+  /**
+   *
+   * @param {Page} page
+   * @param {User} user
+   * @param {string} slackChannelsStr comma separated string. e.g. 'general,channel1,channel2'
+   * @param {boolean} updateOrCreate
+   * @param {string} previousRevision
+   */
+  async function notifyToSlackByUser(page, user, slackChannelsStr, updateOrCreate, previousRevision) {
+    await page.updateSlackChannel(slackChannelsStr)
       .catch((err) => {
         logger.error('Error occured in updating slack channels: ', err);
       });
 
+
     if (slackNotificationService.hasSlackConfig()) {
-      const promises = slackChannels.split(',').map((chan) => {
+      const slackChannels = slackChannelsStr != null ? slackChannelsStr.split(',') : [null];
+
+      const promises = slackChannels.map((chan) => {
         return crowi.slack.postPage(page, user, chan, updateOrCreate, previousRevision);
       });
 
@@ -615,7 +626,7 @@ module.exports = function(crowi, app) {
     }
 
     // user notification
-    if (isSlackEnabled && slackChannels != null) {
+    if (isSlackEnabled) {
       await notifyToSlackByUser(createdPage, req.user, slackChannels, 'create', false);
     }
   };
@@ -702,7 +713,7 @@ module.exports = function(crowi, app) {
     }
 
     // user notification
-    if (isSlackEnabled && slackChannels != null) {
+    if (isSlackEnabled) {
       await notifyToSlackByUser(page, req.user, slackChannels, 'update', previousRevision);
     }
   };

+ 3 - 3
src/server/util/slack.js

@@ -132,7 +132,7 @@ module.exports = function(crowi) {
     }
 
     const message = {
-      channel: `#${channel}`,
+      channel: (channel != null) ? `#${channel}` : undefined,
       username: appTitle,
       text: getSlackMessageTextForPage(page.path, page.id, user, updateType),
       attachments: [attachment],
@@ -159,7 +159,7 @@ module.exports = function(crowi) {
     }
 
     const message = {
-      channel: `#${channel}`,
+      channel: (channel != null) ? `#${channel}` : undefined,
       username: appTitle,
       text: getSlackMessageTextForComment(path, String(comment.page), user),
       attachments: [attachment],
@@ -185,7 +185,7 @@ module.exports = function(crowi) {
     };
 
     const message = {
-      channel: `#${slackChannel}`,
+      channel: (slackChannel != null) ? `#${slackChannel}` : undefined,
       username: appTitle,
       text: messageBody,
       attachments: [attachment],