From a42bd7a507b19c5d3ee71f7e1873ee519541d332 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 2 Sep 2025 11:01:53 +0200 Subject: [PATCH] refactor: add enum for filename sanitization also in the frontend Signed-off-by: Ferdinand Thiessen --- .../Settings/SettingsSanitizeFilenames.vue | 13 +++++++------ apps/files/src/models/SanitizeFilenameStatus.ts | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 apps/files/src/models/SanitizeFilenameStatus.ts diff --git a/apps/files/src/components/Settings/SettingsSanitizeFilenames.vue b/apps/files/src/components/Settings/SettingsSanitizeFilenames.vue index 0aa6b13b6bd..3e7404d17a4 100644 --- a/apps/files/src/components/Settings/SettingsSanitizeFilenames.vue +++ b/apps/files/src/components/Settings/SettingsSanitizeFilenames.vue @@ -11,15 +11,16 @@ import { showError } from '@nextcloud/dialogs' import { loadState } from '@nextcloud/initial-state' import { t } from '@nextcloud/l10n' import { generateOcsUrl } from '@nextcloud/router' +import { computed, ref, shallowRef } from 'vue' import NcButton from '@nextcloud/vue/components/NcButton' import NcInputField from '@nextcloud/vue/components/NcInputField' import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon' import NcNoteCard from '@nextcloud/vue/components/NcNoteCard' import NcProgressBar from '@nextcloud/vue/components/NcProgressBar' -import { computed, ref, shallowRef } from 'vue' +import { SanitizeFilenameStatus } from '../../models/SanitizeFilenameStatus.ts' import logger from '../../logger.ts' -type ApiStatus = { total: number, processed: number, errors?: Record, status: 0 | 1 | 2 | 3 | 4 } +type ApiStatus = { total: number, processed: number, errors?: Record, status: SanitizeFilenameStatus } const { status: initialStatus } = loadState<{ isRunningSanitization: boolean, status: ApiStatus }>('files', 'filesCompatibilitySettings') @@ -31,7 +32,7 @@ const totalUsers = ref(initialStatus.total) const errors = shallowRef(initialStatus.errors || {}) const progress = computed(() => processedUsers.value > 0 ? Math.round((processedUsers.value * 100) / totalUsers.value) : 0) -const isRunning = computed(() => status.value === 1 || status.value === 2) +const isRunning = computed(() => status.value === SanitizeFilenameStatus.Scheduled || status.value === SanitizeFilenameStatus.Running) /** * Start the sanitization process @@ -46,7 +47,7 @@ async function startSanitization() { await axios.post(generateOcsUrl('apps/files/api/v1/filenames/sanitization'), { limit: renameLimit.value, }) - status.value = 1 + status.value = SanitizeFilenameStatus.Scheduled } catch (error) { logger.error('Failed to start filename sanitization.', { error }) @@ -107,7 +108,7 @@ async function refreshStatus() { - + {{ t('files', 'All files have been santized for Windows filename support.') }} @@ -115,7 +116,7 @@ async function refreshStatus() { class="sanitize-filenames__form" :disabled="loading" @submit.stop.prevent="startSanitization"> - + {{ t('files', 'Some files could not be sanitized, please check your logs.') }}
  • diff --git a/apps/files/src/models/SanitizeFilenameStatus.ts b/apps/files/src/models/SanitizeFilenameStatus.ts new file mode 100644 index 00000000000..77442d66606 --- /dev/null +++ b/apps/files/src/models/SanitizeFilenameStatus.ts @@ -0,0 +1,15 @@ +/*! + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +/** + * The current status of the filename sanitization + */ +export enum SanitizeFilenameStatus { + Unknown = 0, + Scheduled = 1, + Running = 2, + Done = 3, + Error = 4, +}