Skip to content

Commit 380de81

Browse files
committed
fix(Sign): use API validation uuid in envelope flow
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent 413a66d commit 380de81

1 file changed

Lines changed: 89 additions & 23 deletions

File tree

src/views/SignPDF/_partials/Sign.vue

Lines changed: 89 additions & 23 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 }
@@ -288,25 +288,42 @@ defineOptions({
288288
: [])
289289
}
290290
}
291-
lastResult = await this.signStore.submitSignature(filePayload, signer.sign_request_uuid, {
291+
const result = await this.signStore.submitSignature(filePayload, signer.sign_request_uuid, {
292292
documentId: this.signStore.document.id,
293293
})
294-
if (lastResult.status === 'signingInProgress') {
295-
anySigningInProgress = true
294+
if (result.status === 'signed') {
295+
signedResult = {
296+
result,
297+
fallbackUuid: signer.sign_request_uuid,
298+
}
299+
}
300+
if (result.status === 'signingInProgress' && !signingInProgressResult) {
301+
signingInProgressResult = {
302+
result,
303+
fallbackUuid: signer.sign_request_uuid,
304+
}
296305
}
297306
}
298307
299-
if (lastResult?.status === 'signed') {
308+
if (signedResult) {
309+
const signRequestUuid = typeof signedResult.result.data.file?.uuid === 'string'
310+
&& signedResult.result.data.file.uuid.length > 0
311+
? signedResult.result.data.file.uuid
312+
: signedResult.fallbackUuid
300313
this.actionHandler.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
301314
this.sidebarStore.hideSidebar()
302315
this.$emit('signed', {
303-
...lastResult.data,
304-
signRequestUuid: myEnvelopeSigners[0].sign_request_uuid,
316+
...signedResult.result.data,
317+
signRequestUuid,
305318
})
306-
} else if (anySigningInProgress) {
319+
} else if (signingInProgressResult) {
320+
const signRequestUuid = typeof signingInProgressResult.result.data.job?.file?.uuid === 'string'
321+
&& signingInProgressResult.result.data.job.file.uuid.length > 0
322+
? signingInProgressResult.result.data.job.file.uuid
323+
: signingInProgressResult.fallbackUuid
307324
this.actionHandler.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
308325
this.$emit('signing-started', {
309-
signRequestUuid: myEnvelopeSigners[0].sign_request_uuid,
326+
signRequestUuid,
310327
async: true,
311328
})
312329
}
@@ -340,11 +357,15 @@ defineOptions({
340357
async: true,
341358
})
342359
} else if (result.status === 'signed') {
360+
const signRequestUuid = typeof result.data.file?.uuid === 'string'
361+
&& result.data.file.uuid.length > 0
362+
? result.data.file.uuid
363+
: this.signRequestUuid
343364
this.actionHandler.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
344365
this.sidebarStore.hideSidebar()
345366
this.$emit('signed', {
346367
...result.data,
347-
signRequestUuid: this.signRequestUuid,
368+
signRequestUuid,
348369
})
349370
}
350371
}
@@ -407,7 +428,21 @@ type SignDocumentFile = NonNullable<SignDocument['files']>[number]
407428
408429
type SignResult = {
409430
status: 'signingInProgress' | 'signed' | 'unknown'
410-
data: Record<string, unknown>
431+
data: SignResultData
432+
}
433+
434+
type SignResultData = {
435+
action?: number
436+
file?: {
437+
uuid?: string
438+
}
439+
job?: {
440+
status?: string
441+
file?: {
442+
uuid?: string
443+
}
444+
}
445+
[key: string]: unknown
411446
}
412447
413448
type SubmitSignaturePayload = {
@@ -464,6 +499,21 @@ type SubmitSignatureCompatContext = {
464499
$emit: (event: string, payload: unknown) => void
465500
}
466501
502+
function getNavigationUuidFromSignResultData(
503+
data: SignResultData | null | undefined,
504+
fallbackUuid: string,
505+
): string {
506+
if (typeof data?.file?.uuid === 'string' && data.file.uuid.length > 0) {
507+
return data.file.uuid
508+
}
509+
510+
if (typeof data?.job?.file?.uuid === 'string' && data.job.file.uuid.length > 0) {
511+
return data.job.file.uuid
512+
}
513+
514+
return fallbackUuid
515+
}
516+
467517
function isSignSubmissionError(error: unknown): error is SignSubmissionError {
468518
return typeof error === 'object' && error !== null
469519
}
@@ -680,8 +730,8 @@ let submitSignature = async (methodConfig: SignatureMethodConfig = {}) => {
680730
: []
681731
682732
if (myEnvelopeSigners.length > 0) {
683-
let anySigningInProgress = false
684-
let lastResult: SignResult | null = null
733+
let signingInProgressResult: { result: SignResult; fallbackUuid: string } | null = null
734+
let signedResult: { result: SignResult; fallbackUuid: string } | null = null
685735
686736
for (const signer of myEnvelopeSigners) {
687737
const filePayload: SubmitSignaturePayload = { ...basePayload }
@@ -702,26 +752,42 @@ let submitSignature = async (methodConfig: SignatureMethodConfig = {}) => {
702752
: [])
703753
}
704754
}
705-
lastResult = await signStore.submitSignature(filePayload, signer.sign_request_uuid, {
755+
const result = await signStore.submitSignature(filePayload, signer.sign_request_uuid, {
706756
documentId: signStore.document.id,
707757
})
708-
if (lastResult.status === 'signingInProgress') {
709-
anySigningInProgress = true
758+
if (result.status === 'signed') {
759+
signedResult = {
760+
result,
761+
fallbackUuid: signer.sign_request_uuid,
762+
}
763+
}
764+
765+
if (result.status === 'signingInProgress' && !signingInProgressResult) {
766+
signingInProgressResult = {
767+
result,
768+
fallbackUuid: signer.sign_request_uuid,
769+
}
710770
}
711771
}
712772
713773
ensureServices()
714-
if (lastResult?.status === 'signed') {
774+
if (signedResult) {
715775
actionHandler!.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
716776
sidebarStore.hideSidebar()
717777
emit('signed', {
718-
...lastResult.data,
719-
signRequestUuid: myEnvelopeSigners[0].sign_request_uuid,
778+
...signedResult.result.data,
779+
signRequestUuid: getNavigationUuidFromSignResultData(
780+
signedResult.result.data,
781+
signedResult.fallbackUuid,
782+
),
720783
})
721-
} else if (anySigningInProgress) {
784+
} else if (signingInProgressResult) {
722785
actionHandler!.closeModal(methodConfig.modalCode || methodConfig.method || 'token')
723786
emit('signing-started', {
724-
signRequestUuid: myEnvelopeSigners[0].sign_request_uuid,
787+
signRequestUuid: getNavigationUuidFromSignResultData(
788+
signingInProgressResult.result.data,
789+
signingInProgressResult.fallbackUuid,
790+
),
725791
async: true,
726792
})
727793
}
@@ -764,7 +830,7 @@ let submitSignature = async (methodConfig: SignatureMethodConfig = {}) => {
764830
sidebarStore.hideSidebar()
765831
emit('signed', {
766832
...result.data,
767-
signRequestUuid: signRequestUuid.value,
833+
signRequestUuid: getNavigationUuidFromSignResultData(result.data, signRequestUuid.value),
768834
})
769835
}
770836
}

0 commit comments

Comments
 (0)