|
|
@@ -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`);
|
|
|
}
|