From 0a9aa6b755dde2ca81d745afa4a0281b0a763835 Mon Sep 17 00:00:00 2001 From: Vitor Mattos Date: Tue, 2 Apr 2024 19:36:13 -0300 Subject: [PATCH] feat: implement sign tab Signed-off-by: Vitor Mattos --- src/Components/RightSidebar/RightSidebar.vue | 17 +++- src/Components/RightSidebar/SignTab.vue | 92 ++++++++++++++++++++ src/store/files.js | 5 ++ src/store/sign.js | 31 ++++--- 4 files changed, 131 insertions(+), 14 deletions(-) create mode 100644 src/Components/RightSidebar/SignTab.vue diff --git a/src/Components/RightSidebar/RightSidebar.vue b/src/Components/RightSidebar/RightSidebar.vue index 4165289dee..c97924d1af 100644 --- a/src/Components/RightSidebar/RightSidebar.vue +++ b/src/Components/RightSidebar/RightSidebar.vue @@ -4,7 +4,12 @@ :subtitle="subTitle" :active="fileName" @close="closeSidebar"> - + + + @@ -16,6 +21,7 @@ import NcAppSidebar from '@nextcloud/vue/dist/Components/NcAppSidebar.js' import NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab.js' import RequestSignatureTab from '../RightSidebar/RequestSignatureTab.vue' +import SignTab from '../RightSidebar/SignTab.vue' import { useFilesStore } from '../../store/files.js' import { useSignStore } from '../../store/sign.js' @@ -25,6 +31,7 @@ export default { NcAppSidebar, NcAppSidebarTab, RequestSignatureTab, + SignTab, }, setup() { const filesStore = useFilesStore() @@ -48,9 +55,17 @@ export default { methods: { showListSigners() { return !!this.filesStore.getFile()?.name + && !this.showSign() + }, + showSign() { + return this.signStore.document.uuid.length > 0 + }, + handleUpdateActive() { + console.log('handleUpdateActive') }, closeSidebar() { this.filesStore.selectFile() + this.signStore.reset() this.$emit('close') }, }, diff --git a/src/Components/RightSidebar/SignTab.vue b/src/Components/RightSidebar/SignTab.vue new file mode 100644 index 0000000000..363f1565a5 --- /dev/null +++ b/src/Components/RightSidebar/SignTab.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/store/files.js b/src/store/files.js index 6e7c7eca17..45349541ab 100644 --- a/src/store/files.js +++ b/src/store/files.js @@ -24,6 +24,7 @@ import axios from '@nextcloud/axios' import { generateOcsUrl } from '@nextcloud/router' import { set } from 'vue' import Moment from '@nextcloud/moment' +import { useSignStore } from './sign.js' export const useFilesStore = defineStore('files', { state: () => { @@ -42,6 +43,10 @@ export const useFilesStore = defineStore('files', { }, selectFile(nodeId) { this.selectedNodeId = nodeId ?? 0 + if (this.selectedNodeId === 0) { + const signStore = useSignStore() + signStore.reset() + } }, getFile() { return this.files[this.selectedNodeId] ?? {} diff --git a/src/store/sign.js b/src/store/sign.js index 8675beecd8..91d99f6b82 100644 --- a/src/store/sign.js +++ b/src/store/sign.js @@ -22,20 +22,22 @@ import { defineStore } from 'pinia' import { loadState } from '@nextcloud/initial-state' +const defaultState = { + errors: [], + document: { + name: '', + description: '', + status: '', + statusText: '', + url: '', + uuid: '', + signers: [], + visibleElements: [], + }, +} + export const useSignStore = defineStore('sign', { - state: () => ({ - errors: [], - document: { - name: '', - description: '', - status: '', - statusText: '', - url: '', - uuid: '', - signers: [], - visibleElements: [], - }, - }), + state: () => ({ ...defaultState }), actions: { initFromState() { @@ -52,5 +54,8 @@ export const useSignStore = defineStore('sign', { visibleElements: loadState('libresign', 'visibleElements', []), } }, + reset() { + Object.assign(this, defaultState); + } }, })