itizawa 5 лет назад
Родитель
Сommit
5fa03095ea
1 измененных файлов с 33 добавлено и 0 удалено
  1. 33 0
      src/server/service/user-notification/index.js

+ 33 - 0
src/server/service/user-notification/index.js

@@ -45,6 +45,39 @@ class UserNotificationService {
     return Promise.allSettled(promises);
   }
 
+  /**
+   * fire user notification for comment
+   *
+   * @memberof UserNotificationService
+   *
+   * @param {Comment} Comment
+   * @param {User} user
+   * @param {string} slackChannelsStr comma separated string. e.g. 'general,channel1,channel2'
+   * @param {Page} page
+   */
+  async fireForComment(comment, user, slackChannelsStr, page) {
+    const { slackNotificationService, slack } = this.crowi;
+
+    await page.updateSlackChannels(slackChannelsStr);
+
+    if (!slackNotificationService.hasSlackConfig()) {
+      throw new Error('slackNotificationService has not been set up');
+    }
+
+    // "dev,slacktest" => [dev,slacktest]
+    const slackChannels = toArrayFromCsv(slackChannelsStr);
+
+    const promises = slackChannels.map(async(chan) => {
+      const res = await slack.postComment(comment, user, chan, page.path);
+      if (res.status !== 'ok') {
+        throw new Error(`fail to send slack notification to #${chan} channel`);
+      }
+      return res;
+    });
+
+    return Promise.allSettled(promises);
+  }
+
 }
 
 module.exports = UserNotificationService;