Skip to content

Commit a9ca770

Browse files
feat: show only relevant tab when editing signer
When editing an existing signer, display only the tab corresponding to the identification method used by that signer (account, email, etc). When adding a new signer, show all available tabs as before. This prevents confusion and improves UX by focusing on the relevant method for each context. Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent 9b2b49d commit a9ca770

1 file changed

Lines changed: 39 additions & 6 deletions

File tree

src/Components/RightSidebar/RequestSignatureTab.vue

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,14 @@
122122
:size="size"
123123
:name="modalTitle"
124124
@closing="filesStore.disableIdentifySigner()">
125-
<NcAppSidebar :name="modalTitle"
125+
<NcNoteCard v-if="isSignerMethodDisabled" type="warning">
126+
{{ t('libresign', 'The identification method "{method}" used by this signer has been disabled by the system administrator.', { method: disabledMethodName }) }}
127+
</NcNoteCard>
128+
<NcAppSidebar v-else
129+
:name="modalTitle"
126130
:active="activeTab"
127131
@update:active="onTabChange">
128-
<NcAppSidebarTab v-for="method in enabledMethods()"
132+
<NcAppSidebarTab v-for="method in enabledMethods"
129133
:id="`tab-${method.name}`"
130134
:key="method.name"
131135
:name="method.friendly_name">
@@ -135,7 +139,8 @@
135139
</template>
136140
<IdentifySigner :signer-to-edit="signerToEdit"
137141
:placeholder="method.friendly_name"
138-
:method="method.name" />
142+
:method="method.name"
143+
:methods="methods" />
139144
</NcAppSidebarTab>
140145
</NcAppSidebar>
141146
</NcDialog>
@@ -395,6 +400,32 @@ export default {
395400
}
396401
return this.t('libresign', 'Add new signer')
397402
},
403+
enabledMethods() {
404+
const enabledMethods = this.methods.filter(method => method.enabled)
405+
406+
if (Object.keys(this.signerToEdit).length > 0 && this.signerToEdit.identifyMethods?.length) {
407+
const signerMethod = this.signerToEdit.identifyMethods[0].method
408+
return enabledMethods.filter(method => method.name === signerMethod)
409+
}
410+
411+
return enabledMethods
412+
},
413+
isSignerMethodDisabled() {
414+
if (Object.keys(this.signerToEdit).length > 0 && this.signerToEdit.identifyMethods?.length) {
415+
const signerMethod = this.signerToEdit.identifyMethods[0].method
416+
const methodConfig = this.methods.find(m => m.name === signerMethod)
417+
return !methodConfig?.enabled
418+
}
419+
return false
420+
},
421+
disabledMethodName() {
422+
if (this.isSignerMethodDisabled && this.signerToEdit.identifyMethods?.length) {
423+
const signerMethod = this.signerToEdit.identifyMethods[0].method
424+
const methodConfig = this.methods.find(m => m.name === signerMethod)
425+
return methodConfig?.friendly_name || signerMethod
426+
}
427+
return ''
428+
},
398429
},
399430
watch: {
400431
signers(signers) {
@@ -470,9 +501,6 @@ export default {
470501
return signerOrder === order && signer.status === 0
471502
})
472503
},
473-
enabledMethods() {
474-
return this.methods.filter(method => method.enabled)
475-
},
476504
isSignElementsAvailable() {
477505
return getCapabilities()?.libresign?.config?.['sign-elements']?.['is-available'] === true
478506
},
@@ -491,10 +519,15 @@ export default {
491519
},
492520
addSigner() {
493521
this.signerToEdit = {}
522+
this.activeTab = this.userConfigStore.signer_identify_tab || ''
494523
this.filesStore.enableIdentifySigner()
495524
},
496525
editSigner(signer) {
497526
this.signerToEdit = signer
527+
if (signer.identifyMethods?.length) {
528+
const signerMethod = signer.identifyMethods[0].method
529+
this.activeTab = `tab-${signerMethod}`
530+
}
498531
this.filesStore.enableIdentifySigner()
499532
},
500533
onTabChange(tabId) {

0 commit comments

Comments
 (0)