itizawa vor 5 Jahren
Ursprung
Commit
43548b273f

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

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

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

@@ -271,7 +271,7 @@ module.exports = function(crowi, app) {
       const { slackChannels } = slackNotificationForm;
 
       try {
-        const results = await userNotificationService.fireForComment(createdComment, req.user, slackChannels, page);
+        const results = await userNotificationService.fire(page, req.user, slackChannels, 'comment', {}, createdComment);
         results.forEach((result) => {
           if (result.status === 'rejected') {
             logger.error('Create user notification failed', result.reason);

+ 2 - 2
src/server/routes/page.js

@@ -723,7 +723,7 @@ module.exports = function(crowi, app) {
     // user notification
     if (isSlackEnabled) {
       try {
-        const results = await userNotificationService.fireForPage(createdPage, req.user, slackChannels, 'create');
+        const results = await userNotificationService.fire(createdPage, req.user, slackChannels, 'create');
         results.forEach((result) => {
           if (result.status === 'rejected') {
             logger.error('Create user notification failed', result.reason);
@@ -868,7 +868,7 @@ module.exports = function(crowi, app) {
     // user notification
     if (isSlackEnabled) {
       try {
-        const results = await userNotificationService.fireForPage(page, req.user, slackChannels, 'update', previousRevision);
+        const results = await userNotificationService.fire(page, req.user, slackChannels, 'update', previousRevision);
         results.forEach((result) => {
           if (result.status === 'rejected') {
             logger.error('Create user notification failed', result.reason);

+ 9 - 35
src/server/service/user-notification/index.js

@@ -19,10 +19,11 @@ class UserNotificationService {
    * @param {Page} page
    * @param {User} user
    * @param {string} slackChannelsStr comma separated string. e.g. 'general,channel1,channel2'
-   * @param {string} updateOrCreate 'create' or 'update'
+   * @param {string} mode 'create' or 'update' or 'comment'
    * @param {string} previousRevision
+   * @param {Comment} comment
    */
-  async fireForPage(page, user, slackChannelsStr, updateOrCreate, previousRevision = '') {
+  async fire(page, user, slackChannelsStr, mode, previousRevision = '', comment = {}) {
     const { slackNotificationService, slack } = this.crowi;
 
     await page.updateSlackChannels(slackChannelsStr);
@@ -35,40 +36,13 @@ class UserNotificationService {
     const slackChannels = toArrayFromCsv(slackChannelsStr);
 
     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`);
+      let res;
+      if (mode === 'comment') {
+        res = await slack.postComment(comment, user, chan, page.path);
+      }
+      else {
+        res = await slack.postPage(page, user, chan, mode, previousRevision);
       }
-      return res;
-    });
-
-    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`);
       }