Skip to content

Commit 3e7e29a

Browse files
authored
Merge pull request #6123 from LibreSign/fix/request-signature-button
fix: request signature button
2 parents 4b119ed + 7513bb2 commit 3e7e29a

File tree

3 files changed

+71
-7
lines changed

3 files changed

+71
-7
lines changed

src/Components/Request/VisibleElements.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ export default {
313313
const visibleElements = this.buildVisibleElements()
314314
315315
try {
316-
const response = await this.filesStore.requestSignaturesWithVisibleElements({ visibleElements })
316+
const response = await this.filesStore.updateSignatureRequest({ visibleElements, status: 1 })
317317
this.filesStore.addFile(response.data)
318318
this.showConfirm = false
319319
showSuccess(t('libresign', response.message))

src/Components/RightSidebar/RequestSignatureTab.vue

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<Signers event="libresign:edit-signer"
1313
@signing-order-changed="debouncedSave">
1414
<template #actions="{signer, closeActions}">
15-
<NcActionInput v-if="isOrderedNumeric && totalSigners > 1 && filesStore.canSave() && !signer.signed"
15+
<NcActionInput v-if="canEditSigningOrder(signer)"
1616
:label="t('libresign', 'Signing order')"
1717
type="number"
1818
:value="signer.signingOrder || 1"
@@ -23,7 +23,7 @@
2323
<OrderNumericAscending :size="20" />
2424
</template>
2525
</NcActionInput>
26-
<NcActionButton v-if="filesStore.canSave() && !signer.signed"
26+
<NcActionButton v-if="canDelete(signer)"
2727
aria-label="Delete"
2828
:close-after-click="true"
2929
@click="filesStore.deleteSigner(signer)">
@@ -32,7 +32,15 @@
3232
</template>
3333
{{ t('libresign', 'Delete') }}
3434
</NcActionButton>
35-
<NcActionButton v-if="filesStore.canRequestSign && !signer.signed && signer.signRequestId && !signer.me"
35+
<NcActionButton v-if="canRequestSignature(signer)"
36+
:close-after-click="true"
37+
@click="requestSignatureForSigner(signer)">
38+
<template #icon>
39+
<Send :size="20" />
40+
</template>
41+
{{ t('libresign', 'Request signature') }}
42+
</NcActionButton>
43+
<NcActionButton v-if="canSendReminder(signer)"
3644
icon="icon-comment"
3745
:close-after-click="true"
3846
@click="sendNotify(signer)">
@@ -240,6 +248,37 @@ export default {
240248
isOrderedNumeric() {
241249
return this.signatureFlow === 'ordered_numeric'
242250
},
251+
canEditSigningOrder() {
252+
return (signer) => {
253+
return this.isOrderedNumeric
254+
&& this.totalSigners > 1
255+
&& this.filesStore.canSave()
256+
&& !signer.signed
257+
}
258+
},
259+
canDelete() {
260+
return (signer) => {
261+
return this.filesStore.canSave() && !signer.signed
262+
}
263+
},
264+
canRequestSignature() {
265+
return (signer) => {
266+
return this.filesStore.canRequestSign
267+
&& !signer.signed
268+
&& signer.signRequestId
269+
&& !signer.me
270+
&& signer.status === 0
271+
}
272+
},
273+
canSendReminder() {
274+
return (signer) => {
275+
return this.filesStore.canRequestSign
276+
&& !signer.signed
277+
&& signer.signRequestId
278+
&& !signer.me
279+
&& signer.status === 1
280+
}
281+
},
243282
showSaveButton() {
244283
if (!this.filesStore.canSave()) {
245284
return false
@@ -415,6 +454,31 @@ export default {
415454
})
416455
417456
},
457+
async requestSignatureForSigner(signer) {
458+
this.hasLoading = true
459+
try {
460+
const file = this.filesStore.getFile()
461+
const signers = file.signers.map(s => {
462+
if (s.signRequestId === signer.signRequestId) {
463+
return { ...s, status: 1 }
464+
}
465+
return s
466+
})
467+
await this.filesStore.updateSignatureRequest({
468+
visibleElements: [],
469+
signers,
470+
status: 1,
471+
})
472+
showSuccess(t('libresign', 'Signature requested'))
473+
} catch (error) {
474+
if (error.response?.data?.ocs?.data?.message) {
475+
showError(error.response.data.ocs.data.message)
476+
} else if (error.response?.data?.ocs?.data?.errors) {
477+
error.response.data.ocs.data.errors.forEach(error => showError(error.message))
478+
}
479+
}
480+
this.hasLoading = false
481+
},
418482
async sign() {
419483
const uuid = this.filesStore.getFile().signers
420484
.reduce((accumulator, signer) => {
@@ -448,7 +512,7 @@ export default {
448512
async request() {
449513
this.hasLoading = true
450514
try {
451-
const response = await this.filesStore.requestSignaturesWithVisibleElements({ visibleElements: [] })
515+
const response = await this.filesStore.updateSignatureRequest({ visibleElements: [], status: 1 })
452516
showSuccess(t('libresign', response.message))
453517
} catch (error) {
454518
if (error.response?.data?.ocs?.data?.message) {

src/store/files.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ export const useFilesStore = function(...args) {
399399
this.addFile(data.ocs.data.data)
400400
return data.ocs.data
401401
},
402-
async requestSignaturesWithVisibleElements({ visibleElements = [], signers = null, uuid = null, nodeId = null }) {
402+
async updateSignatureRequest({ visibleElements = [], signers = null, uuid = null, nodeId = null, status = 1 }) {
403403
const file = this.getFile()
404404
const config = {
405405
url: generateOcsUrl('/apps/libresign/api/v1/request-signature'),
@@ -408,7 +408,7 @@ export const useFilesStore = function(...args) {
408408
name: file?.name,
409409
users: signers || file.signers,
410410
visibleElements,
411-
status: 1,
411+
status,
412412
},
413413
}
414414

0 commit comments

Comments
 (0)