mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-04 00:18:01 +01:00
feat: slack-app can now post to both tagged and default channel (#4520)
Currently the slack-app addon only posts to either the tagged channel for the feature or the default channels. This PR adds a new field that will allow you to configure the addon to post to both the default channels and the tagged channel (s)
This commit is contained in:
parent
dbae2d1153
commit
f114aa401a
@ -57,6 +57,14 @@ const slackAppDefinition: IAddonDefinition = {
|
|||||||
required: false,
|
required: false,
|
||||||
sensitive: false,
|
sensitive: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'alwaysPostToDefault',
|
||||||
|
displayName: 'Always post to default channels',
|
||||||
|
description: `If set to 'true' or 'yes', the app will always post events to the default channels, even if the feature toggle has slack tags`,
|
||||||
|
type: 'text',
|
||||||
|
required: false,
|
||||||
|
sensitive: false,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
events: [
|
events: [
|
||||||
FEATURE_CREATED,
|
FEATURE_CREATED,
|
||||||
|
@ -23,6 +23,7 @@ import { IEvent } from '../types/events';
|
|||||||
interface ISlackAppAddonParameters {
|
interface ISlackAppAddonParameters {
|
||||||
accessToken: string;
|
accessToken: string;
|
||||||
defaultChannels: string;
|
defaultChannels: string;
|
||||||
|
alwaysPostToDefault: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class SlackAppAddon extends Addon {
|
export default class SlackAppAddon extends Addon {
|
||||||
@ -45,16 +46,26 @@ export default class SlackAppAddon extends Addon {
|
|||||||
parameters: ISlackAppAddonParameters,
|
parameters: ISlackAppAddonParameters,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
try {
|
try {
|
||||||
const { accessToken, defaultChannels } = parameters;
|
const { accessToken, defaultChannels, alwaysPostToDefault } =
|
||||||
|
parameters;
|
||||||
if (!accessToken) {
|
if (!accessToken) {
|
||||||
this.logger.warn('No access token provided.');
|
this.logger.warn('No access token provided.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let postToDefault =
|
||||||
|
alwaysPostToDefault === 'true' || alwaysPostToDefault === 'yes';
|
||||||
|
this.logger.debug(`Post to default was set to ${postToDefault}`);
|
||||||
const taggedChannels = this.findTaggedChannels(event);
|
const taggedChannels = this.findTaggedChannels(event);
|
||||||
const eventChannels = taggedChannels.length
|
let eventChannels: string[];
|
||||||
|
if (postToDefault) {
|
||||||
|
eventChannels = taggedChannels.concat(
|
||||||
|
this.getDefaultChannels(defaultChannels),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
eventChannels = taggedChannels.length
|
||||||
? taggedChannels
|
? taggedChannels
|
||||||
: this.getDefaultChannels(defaultChannels);
|
: this.getDefaultChannels(defaultChannels);
|
||||||
|
}
|
||||||
|
|
||||||
if (!eventChannels.length) {
|
if (!eventChannels.length) {
|
||||||
this.logger.debug(
|
this.logger.debug(
|
||||||
|
Loading…
Reference in New Issue
Block a user