Skip to content

Commit 0833707

Browse files
committed
feat: refactor and strip emails from workflow schemas
1 parent f9048b9 commit 0833707

File tree

6 files changed

+43
-31
lines changed

6 files changed

+43
-31
lines changed

frontend/src/features/admin-form/responses/common/utils/mrfSubmissionView.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {
2-
StatusTrackerWorkflowDto,
2+
StrippedFormWorkflowDto,
33
SubmittedStep,
44
WorkflowStatus,
55
} from '~shared/types'
@@ -76,7 +76,7 @@ export const getStatusFromWorkflowStatus = (
7676

7777
export type getWorkflowStatusFromFormResponseProps = {
7878
index: number
79-
workflow: StatusTrackerWorkflowDto
79+
workflow: StrippedFormWorkflowDto
8080
submittedSteps: SubmittedStep[]
8181
}
8282

shared/types/form/workflow.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export type FormWorkflowStep =
3838
| FormWorkflowStepDynamic
3939
| FormWorkflowStepConditional
4040

41-
export type StatusTrackerWorkflowStep =
41+
export type StrippedFormWorkflowStep =
4242
| FormWorkflowStepStaticNoEmails
4343
| FormWorkflowStepDynamic
4444
| FormWorkflowStepConditional
@@ -51,8 +51,8 @@ export type FormWorkflowStepDto = FormWorkflowStep & { _id: string }
5151

5252
export type FormWorkflowDto = Array<FormWorkflowStepDto>
5353

54-
export type StatusTrackerWorkflowStepDto = StatusTrackerWorkflowStep & {
54+
export type StrippedFormWorkflowStepDto = StrippedFormWorkflowStep & {
5555
_id: string
5656
}
5757

58-
export type StatusTrackerWorkflowDto = Array<StatusTrackerWorkflowStepDto>
58+
export type StrippedFormWorkflowDto = Array<StrippedFormWorkflowStepDto>

shared/types/submission.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
FormWorkflowDto,
1212
LogicDto,
1313
ProductItem,
14-
StatusTrackerWorkflowDto,
14+
StrippedFormWorkflowDto,
1515
} from './form'
1616
import { ErrorCode } from './errorCodes'
1717
export type SubmissionId = Opaque<string, 'SubmissionId'>
@@ -363,7 +363,7 @@ export type PaymentSubmissionData = {
363363

364364
export type StatusTrackerData = {
365365
submittedSteps: SubmittedStep[] | undefined
366-
workflow: StatusTrackerWorkflowDto
366+
workflow: StrippedFormWorkflowDto
367367
responseId: string | undefined
368368
form: string
369369
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import {
2+
FormWorkflowDto,
3+
StrippedFormWorkflowDto,
4+
WorkflowType,
5+
} from '../types'
6+
7+
export function stripWorkflowEmails(
8+
workflow: FormWorkflowDto,
9+
): StrippedFormWorkflowDto {
10+
return workflow.map((step) => {
11+
if (step.workflow_type === WorkflowType.Static) {
12+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
13+
const { emails, ...rest } = step
14+
return rest
15+
}
16+
return step
17+
})
18+
}

src/app/modules/form/public-form/public-form.controller.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ import {
77
ErrorCode,
88
ErrorDto,
99
FormAuthType,
10-
FormFieldDto, FormResponseMode,
10+
FormFieldDto,
11+
FormResponseMode,
1112
PrivateFormErrorDto,
1213
PublicFormAuthLogoutDto,
1314
PublicFormAuthRedirectDto,
1415
PublicFormDto,
1516
PublicFormViewDto,
17+
StrippedFormWorkflowDto,
1618
} from '../../../../../shared/types'
19+
import { stripWorkflowEmails } from '../../../../../shared/utils/strip-workflow-emails'
20+
import { IPopulatedMultirespondentForm } from '../../../../types'
1721
import { createLoggerWithLabel } from '../../../config/logger'
1822
import { isMongoError } from '../../../utils/handle-mongo-error'
1923
import { createReqMeta, getRequestIp } from '../../../utils/request'
@@ -64,10 +68,6 @@ import * as FormService from '../form.service'
6468

6569
import * as PublicFormService from './public-form.service'
6670
import { mapFormAuthError, mapRouteError } from './public-form.utils'
67-
import {
68-
PublicMultiRespondentForm
69-
} from "../../../../../frontend/src/features/admin-form/settings/SettingsEmailsPage.stories";
70-
import {IPopulatedMultirespondentForm} from "../../../../types";
7171

7272
const logger = createLoggerWithLabel(module)
7373

@@ -548,7 +548,7 @@ export const handleGetPublicFormSampleSubmission: ControllerHandler<
548548
{ formId: string },
549549
| {
550550
responses: ReturnType<typeof FormService.createSampleSubmissionResponses>
551-
workflowContent?: { workflow: IPopulatedMultirespondentForm['workflow'] }
551+
workflowContent?: { workflow: StrippedFormWorkflowDto }
552552
}
553553
| ErrorDto
554554
| PrivateFormErrorDto
@@ -618,16 +618,16 @@ export const handleGetPublicFormSampleSubmission: ControllerHandler<
618618

619619
// Include workflow if form is a multirespondent form
620620
if (form.responseMode === FormResponseMode.Multirespondent) {
621-
let mrfForm = form as IPopulatedMultirespondentForm
621+
const mrfForm = form as IPopulatedMultirespondentForm
622622
res.json({
623623
responses: sampleData,
624624
workflowContent: {
625-
workflow: mrfForm.workflow,
626-
}
625+
workflow: stripWorkflowEmails(mrfForm.toObject().workflow),
626+
},
627627
})
628+
} else {
629+
return res.json({ responses: sampleData })
628630
}
629-
630-
return res.json({ responses: sampleData })
631631
}
632632
/**
633633
* NOTE: This is exported only for testing

src/app/modules/status-tracker/status-tracker.controller.ts

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import { celebrate, Joi, Segments } from 'celebrate'
22
import { StatusCodes } from 'http-status-codes'
33
import { okAsync } from 'neverthrow'
44

5-
import { StatusTrackerData } from '../../../../shared/types'
65
import {
7-
StatusTrackerWorkflowDto,
8-
WorkflowType,
9-
} from '../../../../shared/types/form/workflow'
6+
StatusTrackerData,
7+
StrippedFormWorkflowDto,
8+
} from '../../../../shared/types'
9+
import { stripWorkflowEmails } from '../../../../shared/utils/strip-workflow-emails'
1010
import { createLoggerWithLabel } from '../../config/logger'
1111
import { createReqMeta } from '../../utils/request'
1212
import { ControllerHandler } from '../core/core.types'
@@ -42,15 +42,9 @@ const getStatusTrackerSubmissionData: ControllerHandler<
4242
({ nextStepRecipientEmails, ...rest }) => rest,
4343
)
4444

45-
const strippedWorkflow: StatusTrackerWorkflowDto =
46-
submissionData.workflow.map((step) => {
47-
if (step.workflow_type === WorkflowType.Static) {
48-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
49-
const { emails, ...rest } = step
50-
return rest
51-
}
52-
return step
53-
})
45+
const strippedWorkflow: StrippedFormWorkflowDto = stripWorkflowEmails(
46+
submissionData.workflow,
47+
)
5448

5549
const statusTrackerData: StatusTrackerData = {
5650
submittedSteps: strippedSubmittedSteps,

0 commit comments

Comments
 (0)