From f37bacf33073f3c68042f90954a26f4a00db3ea7 Mon Sep 17 00:00:00 2001 From: Zac Turner Date: Wed, 19 Nov 2025 16:51:04 +1100 Subject: [PATCH] ap-6007 # Added support for multiple post submission pdf downloads --- CHANGELOG.md | 1 + package-lock.json | 4 ++-- src/services/submit.ts | 19 +++++++++++++++++-- src/types/submissions.ts | 11 +++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7ad2d1f..57b7af00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Added +- Support for downloading multiple post submission PDFs - `formService.searchPointV3Addresses` - `formService.getPointV3Address` diff --git a/package-lock.json b/package-lock.json index 4c9e3576..c8b36264 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3102,7 +3102,7 @@ }, "node_modules/@oneblink/types": { "version": "1.0.0", - "resolved": "git+ssh://git@github.com/oneblink/types.git#b4034219907aaec041ac5fa9adfc753063a152d2", + "resolved": "git+ssh://git@github.com/oneblink/types.git#92be7238bdc985e6344f446af90481279bcbf7f3", "dev": true, "license": "GPL-3.0-only", "dependencies": { @@ -15683,7 +15683,7 @@ } }, "@oneblink/types": { - "version": "git+ssh://git@github.com/oneblink/types.git#b4034219907aaec041ac5fa9adfc753063a152d2", + "version": "git+ssh://git@github.com/oneblink/types.git#92be7238bdc985e6344f446af90481279bcbf7f3", "dev": true, "from": "@oneblink/types@github:oneblink/types", "requires": { diff --git a/src/services/submit.ts b/src/services/submit.ts index c7352ed1..eba9447f 100644 --- a/src/services/submit.ts +++ b/src/services/submit.ts @@ -173,6 +173,19 @@ export default async function submit({ abortSignal, ) + const downloadSubmissionPdfUrl = () => { + if (!data.pdfAccessToken) { + return undefined + } + if ( + formSubmission.definition.postSubmissionReceipt?.allowPDFDownload && + !Array.isArray( + formSubmission.definition.postSubmissionReceipt?.allowPDFDownload, + ) + ) { + return `${tenants.current.apiOrigin}/forms/${formSubmission.definition.id}/submissions/${data.submissionId}/pdf-document?accessToken=${data.pdfAccessToken}` + } + } const formSubmissionResult: FormSubmissionResult = { ...formSubmission, payment: null, @@ -182,9 +195,11 @@ export default async function submit({ submissionTimestamp: data.submissionTimestamp, submissionId: data.submissionId, isUploadingAttachments: false, - downloadSubmissionPdfUrl: !data.pdfAccessToken + downloadSubmissionPdfUrl: downloadSubmissionPdfUrl(), + getDownloadSubmissionPdfUrl: !data.pdfAccessToken ? undefined - : `${tenants.current.apiOrigin}/forms/${formSubmission.definition.id}/submissions/${data.submissionId}/pdf-document?accessToken=${data.pdfAccessToken}`, + : (configurationId: string) => + `${tenants.current.apiOrigin}/forms/${formSubmission.definition.id}/submissions/${data.submissionId}/pdf-document?accessToken=${data.pdfAccessToken}&configurationId=${configurationId}`, attachmentsAccessToken: data.attachmentsAccessToken, } diff --git a/src/types/submissions.ts b/src/types/submissions.ts index b01cc2cc..1999a477 100644 --- a/src/types/submissions.ts +++ b/src/types/submissions.ts @@ -161,7 +161,18 @@ export type FormSubmissionResult = FormSubmission & { /** True if the submission was attempted whilst attachments were uploading */ isUploadingAttachments: boolean /** Exists if the form allows PDF download */ + /** + * @deprecated Only returned when legacy post submission download + * configuration is in use. For non legacy configured forms, use + * `getDownloadSubmissionPdfUrl` instead. + */ downloadSubmissionPdfUrl?: string + /** + * The URL to download the form submission PDF. + * + * @param configurationId - The configuration ID to use for the PDF download. + */ + getDownloadSubmissionPdfUrl?: (configurationId: string) => string /** The access token to download post-submission attachment urls and metadata. */ attachmentsAccessToken?: string }