Skip to content

Commit

Permalink
Merge pull request #473 from oneblink/ON-46214
Browse files Browse the repository at this point in the history
ON-46214 # set preventPayment prop on FormSubmissionResult
  • Loading branch information
mymattcarroll authored Jan 20, 2025
2 parents 869b10b + e862470 commit 507fcb6
Show file tree
Hide file tree
Showing 5 changed files with 592 additions and 15 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

- scheduled task properties to form store filtering

### Fixed

- `preventPayment` not being evaluated when completing a clarification with a calendar booking and payment

## [19.0.0] - 2025-01-12

### Removed
Expand Down
61 changes: 46 additions & 15 deletions src/scheduling-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,38 @@ import {
setSchedulingBooking,
} from './services/schedulingHandlers'

async function getPaymentConfiguration({
paymentReceiptUrl,
paymentFormUrl,
preventPayment,
formSubmissionResult,
schedulingBooking,
}: {
paymentReceiptUrl: string | undefined
paymentFormUrl: string | undefined
preventPayment: boolean
formSubmissionResult: FormSubmissionResult
schedulingBooking: SchedulingBooking
}) {
if (preventPayment || !paymentReceiptUrl) {
return null
}

await setSchedulingBooking(schedulingBooking)
const paymentSubmissionEventConfiguration =
checkForPaymentSubmissionEvent(formSubmissionResult)
if (paymentSubmissionEventConfiguration) {
return await handlePaymentSubmissionEvent({
...paymentSubmissionEventConfiguration,
formSubmissionResult,
paymentReceiptUrl,
paymentFormUrl,
})
}

return null
}

async function getSchedulingFormSubmissionResult(
submissionId: string,
schedulingBooking: SchedulingBooking,
Expand All @@ -27,8 +59,12 @@ async function getSchedulingFormSubmissionResult(
)
}

const { formSubmissionResult, paymentReceiptUrl, paymentFormUrl } =
schedulingSubmissionResultConfiguration
const {
formSubmissionResult,
paymentReceiptUrl,
paymentFormUrl,
preventPayment,
} = schedulingSubmissionResultConfiguration
if (
!formSubmissionResult ||
!formSubmissionResult.scheduling ||
Expand All @@ -45,19 +81,13 @@ async function getSchedulingFormSubmissionResult(
)
}

if (paymentReceiptUrl) {
await setSchedulingBooking(schedulingBooking)
const paymentSubmissionEventConfiguration =
checkForPaymentSubmissionEvent(formSubmissionResult)
if (paymentSubmissionEventConfiguration) {
formSubmissionResult.payment = await handlePaymentSubmissionEvent({
...paymentSubmissionEventConfiguration,
formSubmissionResult,
paymentReceiptUrl,
paymentFormUrl,
})
}
}
formSubmissionResult.payment = await getPaymentConfiguration({
paymentFormUrl,
paymentReceiptUrl,
preventPayment,
formSubmissionResult,
schedulingBooking,
})

await removeSchedulingSubmissionResult()

Expand Down Expand Up @@ -270,4 +300,5 @@ export {
handleCancelSchedulingBookingQuerystring,
createNylasExistingBookingSession,
createNylasNewBookingSession,
getSchedulingFormSubmissionResult,
}
4 changes: 4 additions & 0 deletions src/services/schedulingHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ type SchedulingSubmissionResult = {
formSubmissionResult: FormSubmissionResult
paymentReceiptUrl: string | undefined
paymentFormUrl: string | undefined
preventPayment: boolean
}
export async function getSchedulingSubmissionResult(): Promise<SchedulingSubmissionResult | null> {
return await utilsService.getLocalForageItem(SCHEDULING_SUBMISSION_RESULT_KEY)
Expand Down Expand Up @@ -106,12 +107,14 @@ async function handleSchedulingSubmissionEvent({
schedulingUrlConfiguration,
paymentReceiptUrl,
paymentFormUrl,
preventPayment,
}: {
formSubmissionResult: FormSubmissionResult
schedulingSubmissionEvent: SubmissionEventTypes.FormSchedulingEvent
schedulingUrlConfiguration: SchedulingUrlConfiguration
paymentReceiptUrl: string | undefined
paymentFormUrl: string | undefined
preventPayment: boolean
}): Promise<NonNullable<FormSubmissionResult['scheduling']>> {
console.log(
'Attempting to handle submission with scheduling submission event',
Expand Down Expand Up @@ -143,6 +146,7 @@ async function handleSchedulingSubmissionEvent({
},
paymentReceiptUrl,
paymentFormUrl,
preventPayment,
})

return scheduling
Expand Down
6 changes: 6 additions & 0 deletions src/services/submit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ export default async function submit({
submissionTimestamp: null,
submissionId: null,
payment: null,
preventPayment: false,
scheduling: null,
isUploadingAttachments: false,
})
Expand All @@ -127,6 +128,7 @@ export default async function submit({
submissionTimestamp: null,
submissionId: null,
payment: null,
preventPayment: false,
scheduling: null,
isUploadingAttachments: true,
})
Expand All @@ -141,6 +143,7 @@ export default async function submit({
submissionTimestamp: null,
submissionId: null,
payment: null,
preventPayment: false,
scheduling: null,
isUploadingAttachments: true,
})
Expand Down Expand Up @@ -183,6 +186,7 @@ export default async function submit({
schedulingUrlConfiguration,
paymentReceiptUrl,
paymentFormUrl,
preventPayment: data.preventPayment,
})
} else if (
paymentSubmissionEventConfiguration &&
Expand Down Expand Up @@ -230,6 +234,7 @@ export default async function submit({
payment: null,
scheduling: null,
isUploadingAttachments: false,
preventPayment: false,
})
}

Expand All @@ -246,6 +251,7 @@ export default async function submit({
payment: null,
scheduling: null,
isUploadingAttachments: false,
preventPayment: false,
})
}

Expand Down
Loading

0 comments on commit 507fcb6

Please sign in to comment.