Skip to content

Commit 678f2e3

Browse files
fix(Sign): use API validation uuid in envelope flow
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent 725cf48 commit 678f2e3

1 file changed

Lines changed: 64 additions & 17 deletions

File tree

src/views/SignPDF/_partials/Sign.vue

Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,8 @@ defineOptions({
266266
: []
267267
268268
if (myEnvelopeSigners.length > 0) {
269-
let anySigningInProgress = false
270-
let lastResult: SignResult | null = null
269+
let signingInProgressResult: { result: SignResult; fallbackUuid: string } | null = null
270+
let signedResult: { result: SignResult; fallbackUuid: string } | null = null
271271
272272
for (const signer of myEnvelopeSigners) {
273273
const filePayload: SubmitSignaturePayload = { ...basePayload }
@@ -298,17 +298,25 @@ defineOptions({
298298
}
299299
}
300300
301-
if (lastResult?.status === 'signed') {
301+
if (signedResult) {
302+
const signRequestUuid = typeof signedResult.result.data.file?.uuid === 'string'
303+
&& signedResult.result.data.file.uuid.length > 0
304+
? signedResult.result.data.file.uuid
305+
: signedResult.fallbackUuid
302306
this.actionHandler.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
303307
this.sidebarStore.hideSidebar()
304308
this.$emit('signed', {
305-
...lastResult.data,
306-
signRequestUuid: myEnvelopeSigners[0].sign_request_uuid,
309+
...signedResult.result.data,
310+
signRequestUuid,
307311
})
308-
} else if (anySigningInProgress) {
312+
} else if (signingInProgressResult) {
313+
const signRequestUuid = typeof signingInProgressResult.result.data.job?.file?.uuid === 'string'
314+
&& signingInProgressResult.result.data.job.file.uuid.length > 0
315+
? signingInProgressResult.result.data.job.file.uuid
316+
: signingInProgressResult.fallbackUuid
309317
this.actionHandler.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
310318
this.$emit('signing-started', {
311-
signRequestUuid: myEnvelopeSigners[0].sign_request_uuid,
319+
signRequestUuid,
312320
async: true,
313321
})
314322
}
@@ -343,11 +351,15 @@ defineOptions({
343351
async: true,
344352
})
345353
} else if (result.status === 'signed') {
354+
const signRequestUuid = typeof result.data.file?.uuid === 'string'
355+
&& result.data.file.uuid.length > 0
356+
? result.data.file.uuid
357+
: this.signRequestUuid
346358
this.actionHandler.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
347359
this.sidebarStore.hideSidebar()
348360
this.$emit('signed', {
349361
...result.data,
350-
signRequestUuid: this.signRequestUuid,
362+
signRequestUuid,
351363
})
352364
}
353365
}
@@ -410,7 +422,21 @@ type SignDocumentFile = NonNullable<SignDocument['files']>[number]
410422
411423
type SignResult = {
412424
status: 'signingInProgress' | 'signed' | 'unknown'
413-
data: Record<string, unknown>
425+
data: SignResultData
426+
}
427+
428+
type SignResultData = {
429+
action?: number
430+
file?: {
431+
uuid?: string
432+
}
433+
job?: {
434+
status?: string
435+
file?: {
436+
uuid?: string
437+
}
438+
}
439+
[key: string]: unknown
414440
}
415441
416442
type SubmitSignaturePayload = {
@@ -467,6 +493,21 @@ type SubmitSignatureCompatContext = {
467493
$emit: (event: string, payload: unknown) => void
468494
}
469495
496+
function getNavigationUuidFromSignResultData(
497+
data: SignResultData | null | undefined,
498+
fallbackUuid: string,
499+
): string {
500+
if (typeof data?.file?.uuid === 'string' && data.file.uuid.length > 0) {
501+
return data.file.uuid
502+
}
503+
504+
if (typeof data?.job?.file?.uuid === 'string' && data.job.file.uuid.length > 0) {
505+
return data.job.file.uuid
506+
}
507+
508+
return fallbackUuid
509+
}
510+
470511
function isSignSubmissionError(error: unknown): error is SignSubmissionError {
471512
return typeof error === 'object' && error !== null
472513
}
@@ -683,8 +724,8 @@ let submitSignature = async (methodConfig: SignatureMethodConfig = {}) => {
683724
: []
684725
685726
if (myEnvelopeSigners.length > 0) {
686-
let anySigningInProgress = false
687-
let lastResult: SignResult | null = null
727+
let signingInProgressResult: { result: SignResult; fallbackUuid: string } | null = null
728+
let signedResult: { result: SignResult; fallbackUuid: string } | null = null
688729
689730
for (const signer of myEnvelopeSigners) {
690731
const filePayload: SubmitSignaturePayload = { ...basePayload }
@@ -716,17 +757,23 @@ let submitSignature = async (methodConfig: SignatureMethodConfig = {}) => {
716757
}
717758
718759
ensureServices()
719-
if (lastResult?.status === 'signed') {
760+
if (signedResult) {
720761
actionHandler!.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
721762
sidebarStore.hideSidebar()
722763
emit('signed', {
723-
...lastResult.data,
724-
signRequestUuid: myEnvelopeSigners[0].sign_request_uuid,
764+
...signedResult.result.data,
765+
signRequestUuid: getNavigationUuidFromSignResultData(
766+
signedResult.result.data,
767+
signedResult.fallbackUuid,
768+
),
725769
})
726-
} else if (anySigningInProgress) {
770+
} else if (signingInProgressResult) {
727771
actionHandler!.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
728772
emit('signing-started', {
729-
signRequestUuid: myEnvelopeSigners[0].sign_request_uuid,
773+
signRequestUuid: getNavigationUuidFromSignResultData(
774+
signingInProgressResult.result.data,
775+
signingInProgressResult.fallbackUuid,
776+
),
730777
async: true,
731778
})
732779
}
@@ -770,7 +817,7 @@ let submitSignature = async (methodConfig: SignatureMethodConfig = {}) => {
770817
sidebarStore.hideSidebar()
771818
emit('signed', {
772819
...result.data,
773-
signRequestUuid: signRequestUuid.value,
820+
signRequestUuid: getNavigationUuidFromSignResultData(result.data, signRequestUuid.value),
774821
})
775822
}
776823
}

0 commit comments

Comments
 (0)