diff options
Diffstat (limited to 'src/views/ChecksumTab20.vue')
-rw-r--r-- | src/views/ChecksumTab20.vue | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/src/views/ChecksumTab20.vue b/src/views/ChecksumTab20.vue deleted file mode 100644 index 6a8b405..0000000 --- a/src/views/ChecksumTab20.vue +++ /dev/null @@ -1,157 +0,0 @@ -<!-- - - @copyright Copyright (c) 2021 Patrick Herzberg <patrick@westberliner.net> - - - - @author Patrick Herzberg <patrick@westberliner.net> - - - - @license GNU AGPL version 3 or any later version - - - - This program is free software: you can redistribute it and/or modify - - it under the terms of the GNU Affero General Public License as - - published by the Free Software Foundation, either version 3 of the - - License, or (at your option) any later version. - - - - This program is distributed in the hope that it will be useful, - - but WITHOUT ANY WARRANTY; without even the implied warranty of - - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - - GNU Affero General Public License for more details. - - - - You should have received a copy of the GNU Affero General Public License - - along with this program. If not, see <http://www.gnu.org/licenses/>. - - - --> -<template> - <Tab :id="id" - :icon="icon" - :name="name"> - <!-- checksum content --> - <Multiselect - v-model="algorithm" - :options="algorithms" - track-by="id" - label="label" - @change="onAlgorithmChangeHandler" /> - <br> - <br> - <p :class="{ 'icon-loading': loading }" class="checksum-hash-result"> - <span v-if="!loading && algorithm.id !== ''"><strong>{{ algorithm.label }}:</strong>{{ hash }}</span> - </p> - </Tab> -</template> - -<script> -import { generateUrl } from '@nextcloud/router' -import axios from '@nextcloud/axios' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' -import Tab from '@nextcloud/vue/dist/Components/AppSidebarTab' -import Algorithms from '../model/Algorithms.ts' - -export default { - name: 'ChecksumTab20', - - components: { - Tab, - Multiselect, - }, - - mixins: [], - - props: { - fileInfo: { - type: Object, - default: () => {}, - required: true, - }, - }, - - data() { - return { - // Enabled won't work as intended. This is a workaround for now. - icon: (this.fileInfo.type === 'file') ? 'icon-category-auth' : '', - name: t('checksum', 'Checksum'), - loading: false, - algorithm: Algorithms[0], - algorithms: Algorithms, - hash: '', - } - }, - - computed: { - /** - * Needed to differenciate the tabs - * pulled from the AppSidebarTab component. - * - * @returns {string} - */ - id() { - return 'checksum' - }, - - /** - * Allow checksum only on files. - * - * @returns {boolean} - */ - enabled() { - return (this.fileInfo.type === 'file') - }, - - /** - * Returns the current active tab. - * Needed because AppSidebarTab also uses $parent.activeTab. - * - * @returns {string} - */ - activeTab() { - return this.$parent.activeTab - }, - - }, - - methods: { - /** - * Handles selection change event by triggering hash ajax call. - * - * @param {Object} algorithm - The selected algorithm object. - * @param {string} algorithm.id - The selected algorithm id. - * @param {string} algorithm.label - The selected algorithm label. - */ - onAlgorithmChangeHandler(algorithm) { - this.hash = '' - if (algorithm.id.length) { - this.loading = true - this.getChecksum(algorithm.id) - } - }, - - /** - * @param {string} algorithmType - The hasg algorithm type. - */ - getChecksum(algorithmType) { - const url = generateUrl('/apps/checksum/check') - const params = { source: `${this.fileInfo.path}/${this.fileInfo.name}`, type: algorithmType } - axios.get(url, { params }).then(response => { - this.loading = false - this.hash = response.data.msg - }).catch(err => { - console.error(err) - }) - }, - - /** - * Reset the current view to its default state - */ - resetState() { - this.loading = false - this.algorithm = this.Algorithms[0] - this.hash = '' - }, - }, -} -</script> - -<style lang="scss" scoped> - .checksum-hash-result { - text-align: center; - word-wrap: break-word; - } -</style> |