Skip to content

Commit 13e67c3

Browse files
committed
Move default notifiers into the workflow natively
1 parent b2e86fa commit 13e67c3

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

src/components/project/workflow/handlers/project-workflow-notification.handler.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { User } from '../../../user/dto';
2020
import { Notifier } from '../../../workflow/transitions/notifiers';
2121
import { Project, ProjectStep } from '../../dto';
2222
import { ProjectTransitionedEvent } from '../events/project-transitioned.event';
23-
import { TeamMembers } from '../transitions/notifiers';
2423

2524
@EventsHandler(ProjectTransitionedEvent)
2625
export class ProjectWorkflowNotificationHandler
@@ -41,11 +40,8 @@ export class ProjectWorkflowNotificationHandler
4140
const { previousStep, next, workflowEvent } = event;
4241
const transition = typeof next !== 'string' ? next : undefined;
4342

44-
const notifiers = [
45-
TeamMembers,
46-
...(transition?.notifiers ?? []),
47-
// TODO on bypass: keep notifying members? add anyone else?
48-
];
43+
// TODO on bypass: keep notifying members? add anyone else?
44+
const notifiers = transition?.notifiers ?? [];
4945

5046
const params = { project: event.project, moduleRef: this.moduleRef };
5147
const notifyees = (

src/components/project/workflow/project-workflow.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ import {
1212
BackToActive,
1313
ResolveParams,
1414
} from './transitions/dynamic-step';
15-
import { EmailDistros, FinancialApprovers } from './transitions/notifiers';
15+
import {
16+
EmailDistros,
17+
FinancialApprovers,
18+
TeamMembers,
19+
} from './transitions/notifiers';
1620

1721
// This also controls the order shown in the UI.
1822
// Therefore, these should generally flow down.
@@ -24,6 +28,7 @@ export const ProjectWorkflow = defineWorkflow({
2428
states: Step,
2529
event: ProjectWorkflowEvent,
2630
context: defineContext<ResolveParams>,
31+
defaultNotifiers: [TeamMembers],
2732
})({
2833
'Early Conversations -> Pending Regional Director Approval': {
2934
from: Step.EarlyConversations,

src/components/workflow/define-workflow.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
ResourceShape,
1010
} from '~/common';
1111
import { WorkflowEvent } from './dto';
12+
import { TransitionNotifier } from './transitions/notifiers';
1213
import { InternalTransition, TransitionInput } from './transitions/types';
1314

1415
export const defineWorkflow =
@@ -31,6 +32,10 @@ export const defineWorkflow =
3132
* context: defineContext<X>
3233
*/
3334
context: () => Context;
35+
/**
36+
* Notifiers that apply to all transitions by default.
37+
*/
38+
defaultNotifiers?: ReadonlyArray<TransitionNotifier<Context>>;
3439
}) =>
3540
<TransitionNames extends string>(
3641
obj: Record<TransitionNames, TransitionInput<State, Context>>,
@@ -46,7 +51,10 @@ export const defineWorkflow =
4651
from: transition.from ? setOf(many(transition.from)) : undefined,
4752
key: (transition.key ?? uuid.v5(name, input.id)) as ID,
4853
conditions: maybeMany(transition.conditions),
49-
notifiers: maybeMany(transition.notifiers),
54+
notifiers: [
55+
...(input.defaultNotifiers ?? []),
56+
...(maybeMany(transition.notifiers) ?? []),
57+
],
5058
}),
5159
).asRecord as Record<
5260
TransitionNames,

0 commit comments

Comments
 (0)