From fc25bc6b82b2748ca442d16560324e5f4e0aa393 Mon Sep 17 00:00:00 2001 From: Thomas Heartman Date: Wed, 19 Jul 2023 15:52:19 +0200 Subject: [PATCH] Feat(#4205): add potentially stale events to addons (#4279) This PR adds potentially stale events as available to all addons and adds a formatted message. ## Discussion I'd still be interested in hearing input on whether the event type should be selectable by addons or not before we start emitting the event. I'm leaning towards "yes", but I'll take your thoughts into consideration. --- src/lib/addons/datadog-definition.ts | 2 ++ src/lib/addons/feature-event-formatter-md.ts | 10 ++++++++++ src/lib/addons/slack-app-definition.ts | 2 ++ src/lib/addons/slack-definition.ts | 2 ++ src/lib/addons/teams-definition.ts | 2 ++ src/lib/addons/webhook-definition.ts | 2 ++ 6 files changed, 20 insertions(+) diff --git a/src/lib/addons/datadog-definition.ts b/src/lib/addons/datadog-definition.ts index b6db754d9a..96833455bd 100644 --- a/src/lib/addons/datadog-definition.ts +++ b/src/lib/addons/datadog-definition.ts @@ -13,6 +13,7 @@ import { FEATURE_METADATA_UPDATED, FEATURE_PROJECT_CHANGE, FEATURE_VARIANTS_UPDATED, + FEATURE_POTENTIALLY_STALE_ON, } from '../types/events'; import { IAddonDefinition } from '../types/model'; @@ -77,6 +78,7 @@ const dataDogDefinition: IAddonDefinition = { FEATURE_METADATA_UPDATED, FEATURE_PROJECT_CHANGE, FEATURE_VARIANTS_UPDATED, + FEATURE_POTENTIALLY_STALE_ON, ], tagTypes: [ { diff --git a/src/lib/addons/feature-event-formatter-md.ts b/src/lib/addons/feature-event-formatter-md.ts index a6cc4ed726..95a339ff7f 100644 --- a/src/lib/addons/feature-event-formatter-md.ts +++ b/src/lib/addons/feature-event-formatter-md.ts @@ -4,6 +4,7 @@ import { FEATURE_ENVIRONMENT_DISABLED, FEATURE_ENVIRONMENT_ENABLED, FEATURE_METADATA_UPDATED, + FEATURE_POTENTIALLY_STALE_ON, FEATURE_PROJECT_CHANGE, FEATURE_REVIVED, FEATURE_STALE_OFF, @@ -301,6 +302,13 @@ export class FeatureEventFormatterMd implements FeatureEventFormatter { return `${createdBy} moved ${featureName} to ${project}`; } + generateFeaturePotentiallyStaleOnText(event: IEvent): string { + const { project, createdBy } = event; + const feature = this.generateFeatureLink(event); + + return `${createdBy} marked feature toggle *${feature}* (in project *${project}*) as *potentially stale*.`; + } + featureLink(event: IEvent): string { const { type, project = '', featureName } = event; if (type === FEATURE_ARCHIVED) { @@ -354,6 +362,8 @@ export class FeatureEventFormatterMd implements FeatureEventFormatter { return this.generateMetadataText(event); case FEATURE_PROJECT_CHANGE: return this.generateProjectChangeText(event); + case FEATURE_POTENTIALLY_STALE_ON: + return this.generateFeaturePotentiallyStaleOnText(event); default: return this.defaultText(event); } diff --git a/src/lib/addons/slack-app-definition.ts b/src/lib/addons/slack-app-definition.ts index 569bba35fd..d25b8cd6d6 100644 --- a/src/lib/addons/slack-app-definition.ts +++ b/src/lib/addons/slack-app-definition.ts @@ -13,6 +13,7 @@ import { FEATURE_METADATA_UPDATED, FEATURE_PROJECT_CHANGE, FEATURE_VARIANTS_UPDATED, + FEATURE_POTENTIALLY_STALE_ON, } from '../types/events'; import { IAddonDefinition } from '../types/model'; @@ -63,6 +64,7 @@ const slackAppDefinition: IAddonDefinition = { FEATURE_METADATA_UPDATED, FEATURE_VARIANTS_UPDATED, FEATURE_PROJECT_CHANGE, + FEATURE_POTENTIALLY_STALE_ON, ], tagTypes: [ { diff --git a/src/lib/addons/slack-definition.ts b/src/lib/addons/slack-definition.ts index d6b79211ec..c5e0e28f4d 100644 --- a/src/lib/addons/slack-definition.ts +++ b/src/lib/addons/slack-definition.ts @@ -13,6 +13,7 @@ import { FEATURE_METADATA_UPDATED, FEATURE_PROJECT_CHANGE, FEATURE_VARIANTS_UPDATED, + FEATURE_POTENTIALLY_STALE_ON, } from '../types/events'; import { IAddonDefinition } from '../types/model'; @@ -87,6 +88,7 @@ const slackDefinition: IAddonDefinition = { FEATURE_METADATA_UPDATED, FEATURE_VARIANTS_UPDATED, FEATURE_PROJECT_CHANGE, + FEATURE_POTENTIALLY_STALE_ON, ], tagTypes: [ { diff --git a/src/lib/addons/teams-definition.ts b/src/lib/addons/teams-definition.ts index b37c3a1c8b..707607ebef 100644 --- a/src/lib/addons/teams-definition.ts +++ b/src/lib/addons/teams-definition.ts @@ -13,6 +13,7 @@ import { FEATURE_METADATA_UPDATED, FEATURE_PROJECT_CHANGE, FEATURE_VARIANTS_UPDATED, + FEATURE_POTENTIALLY_STALE_ON, } from '../types/events'; import { IAddonDefinition } from '../types/model'; @@ -58,6 +59,7 @@ const teamsDefinition: IAddonDefinition = { FEATURE_METADATA_UPDATED, FEATURE_VARIANTS_UPDATED, FEATURE_PROJECT_CHANGE, + FEATURE_POTENTIALLY_STALE_ON, ], }; diff --git a/src/lib/addons/webhook-definition.ts b/src/lib/addons/webhook-definition.ts index f85a1f0a0a..9ee4bec4b0 100644 --- a/src/lib/addons/webhook-definition.ts +++ b/src/lib/addons/webhook-definition.ts @@ -24,6 +24,7 @@ import { CHANGE_REQUEST_CANCELLED, CHANGE_REQUEST_SENT_TO_REVIEW, CHANGE_REQUEST_APPLIED, + FEATURE_POTENTIALLY_STALE_ON, } from '../types/events'; import { IAddonDefinition } from '../types/model'; @@ -117,6 +118,7 @@ const webhookDefinition: IAddonDefinition = { CHANGE_REQUEST_CANCELLED, CHANGE_REQUEST_SENT_TO_REVIEW, CHANGE_REQUEST_APPLIED, + FEATURE_POTENTIALLY_STALE_ON, ], };