From 075adea637a791db76ffd5269db59ec1da0a0e27 Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Thu, 11 Dec 2025 15:53:38 -0300
Subject: [PATCH 1/4] refactor: rename requestSignaturesWithVisibleElements to
updateSignatureRequest
- Add status parameter with default value 1
- Make method more flexible for different status transitions
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
src/store/files.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/store/files.js b/src/store/files.js
index 71fb93b98..990d576f0 100644
--- a/src/store/files.js
+++ b/src/store/files.js
@@ -399,7 +399,7 @@ export const useFilesStore = function(...args) {
this.addFile(data.ocs.data.data)
return data.ocs.data
},
- async requestSignaturesWithVisibleElements({ visibleElements = [], signers = null, uuid = null, nodeId = null }) {
+ async updateSignatureRequest({ visibleElements = [], signers = null, uuid = null, nodeId = null, status = 1 }) {
const file = this.getFile()
const config = {
url: generateOcsUrl('/apps/libresign/api/v1/request-signature'),
@@ -408,7 +408,7 @@ export const useFilesStore = function(...args) {
name: file?.name,
users: signers || file.signers,
visibleElements,
- status: 1,
+ status,
},
}
From c8484973bfa587f33c03c84a8b45c29dcf1396fa Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Thu, 11 Dec 2025 15:53:47 -0300
Subject: [PATCH 2/4] feat: add conditional buttons for draft and pending
signers
- Show 'Request signature' button for draft status (status === 0)
- Show 'Send reminder' button for pending status (status === 1)
- Implement requestSignatureForSigner method to update signer status
- Use signRequestId instead of identify for signer identification
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
.../RightSidebar/RequestSignatureTab.vue | 37 ++++++++++++++++++-
1 file changed, 35 insertions(+), 2 deletions(-)
diff --git a/src/Components/RightSidebar/RequestSignatureTab.vue b/src/Components/RightSidebar/RequestSignatureTab.vue
index 4dccfb081..eb95fe96c 100644
--- a/src/Components/RightSidebar/RequestSignatureTab.vue
+++ b/src/Components/RightSidebar/RequestSignatureTab.vue
@@ -32,7 +32,15 @@
{{ t('libresign', 'Delete') }}
-
+
+
+
+ {{ t('libresign', 'Request signature') }}
+
+
@@ -415,6 +423,31 @@ export default {
})
},
+ async requestSignatureForSigner(signer) {
+ this.hasLoading = true
+ try {
+ const file = this.filesStore.getFile()
+ const signers = file.signers.map(s => {
+ if (s.signRequestId === signer.signRequestId) {
+ return { ...s, status: 1 }
+ }
+ return s
+ })
+ await this.filesStore.updateSignatureRequest({
+ visibleElements: [],
+ signers,
+ status: 1,
+ })
+ showSuccess(t('libresign', 'Signature requested'))
+ } catch (error) {
+ if (error.response?.data?.ocs?.data?.message) {
+ showError(error.response.data.ocs.data.message)
+ } else if (error.response?.data?.ocs?.data?.errors) {
+ error.response.data.ocs.data.errors.forEach(error => showError(error.message))
+ }
+ }
+ this.hasLoading = false
+ },
async sign() {
const uuid = this.filesStore.getFile().signers
.reduce((accumulator, signer) => {
@@ -448,7 +481,7 @@ export default {
async request() {
this.hasLoading = true
try {
- const response = await this.filesStore.requestSignaturesWithVisibleElements({ visibleElements: [] })
+ const response = await this.filesStore.updateSignatureRequest({ visibleElements: [], status: 1 })
showSuccess(t('libresign', response.message))
} catch (error) {
if (error.response?.data?.ocs?.data?.message) {
From a25ccf5279666f54dba865c94301f5e0a1f65a1f Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Thu, 11 Dec 2025 15:53:55 -0300
Subject: [PATCH 3/4] refactor: update VisibleElements to use
updateSignatureRequest method
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
src/Components/Request/VisibleElements.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Components/Request/VisibleElements.vue b/src/Components/Request/VisibleElements.vue
index 7dac0cc7e..bb8075d95 100644
--- a/src/Components/Request/VisibleElements.vue
+++ b/src/Components/Request/VisibleElements.vue
@@ -313,7 +313,7 @@ export default {
const visibleElements = this.buildVisibleElements()
try {
- const response = await this.filesStore.requestSignaturesWithVisibleElements({ visibleElements })
+ const response = await this.filesStore.updateSignatureRequest({ visibleElements, status: 1 })
this.filesStore.addFile(response.data)
this.showConfirm = false
showSuccess(t('libresign', response.message))
From 7513bb2869135ebe8e1b8df154d700cd492f7fa4 Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Thu, 11 Dec 2025 15:58:54 -0300
Subject: [PATCH 4/4] refactor: extract signer action conditions to computed
properties
- Add canEditSigningOrder, canDelete, canRequestSignature, canSendReminder
- Improve code readability and maintainability
- Ensure consistent reactive behavior across all conditions
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
.../RightSidebar/RequestSignatureTab.vue | 39 +++++++++++++++++--
1 file changed, 35 insertions(+), 4 deletions(-)
diff --git a/src/Components/RightSidebar/RequestSignatureTab.vue b/src/Components/RightSidebar/RequestSignatureTab.vue
index eb95fe96c..582f5e9f4 100644
--- a/src/Components/RightSidebar/RequestSignatureTab.vue
+++ b/src/Components/RightSidebar/RequestSignatureTab.vue
@@ -12,7 +12,7 @@
-
-
@@ -32,7 +32,7 @@
{{ t('libresign', 'Delete') }}
-
@@ -40,7 +40,7 @@
{{ t('libresign', 'Request signature') }}
-
@@ -248,6 +248,37 @@ export default {
isOrderedNumeric() {
return this.signatureFlow === 'ordered_numeric'
},
+ canEditSigningOrder() {
+ return (signer) => {
+ return this.isOrderedNumeric
+ && this.totalSigners > 1
+ && this.filesStore.canSave()
+ && !signer.signed
+ }
+ },
+ canDelete() {
+ return (signer) => {
+ return this.filesStore.canSave() && !signer.signed
+ }
+ },
+ canRequestSignature() {
+ return (signer) => {
+ return this.filesStore.canRequestSign
+ && !signer.signed
+ && signer.signRequestId
+ && !signer.me
+ && signer.status === 0
+ }
+ },
+ canSendReminder() {
+ return (signer) => {
+ return this.filesStore.canRequestSign
+ && !signer.signed
+ && signer.signRequestId
+ && !signer.me
+ && signer.status === 1
+ }
+ },
showSaveButton() {
if (!this.filesStore.canSave()) {
return false