From: Ferdinand Thiessen Date: Mon, 14 Oct 2024 14:27:43 +0000 (+0200) Subject: fix(files_sharing): Add proper user facing messages on success X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0ccced866495a5f157385bff857b8df1bf0f4bc1;p=nextcloud-server.git fix(files_sharing): Add proper user facing messages on success 1. Use proper translated strings 2. Fix invalid use of translation message on API result 3. Log all errors Co-authored-by: Ferdinand Thiessen Co-authored-by: Pytal <24800714+Pytal@users.noreply.github.com> Signed-off-by: Ferdinand Thiessen --- diff --git a/apps/files_sharing/src/mixins/SharesMixin.js b/apps/files_sharing/src/mixins/SharesMixin.js index 994a0fe5cb3..8b467a4e0bc 100644 --- a/apps/files_sharing/src/mixins/SharesMixin.js +++ b/apps/files_sharing/src/mixins/SharesMixin.js @@ -3,11 +3,11 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ +import { getCurrentUser } from '@nextcloud/auth' +import { showError, showSuccess } from '@nextcloud/dialogs' import { emit } from '@nextcloud/event-bus' import { fetchNode } from '../services/WebdavClient.ts' -import { showError, showSuccess } from '@nextcloud/dialogs' -import { getCurrentUser } from '@nextcloud/auth' -// eslint-disable-next-line import/no-unresolved, n/no-missing-import + import PQueue from 'p-queue' import debounce from 'debounce' @@ -92,10 +92,10 @@ export default { // Datepicker language lang() { const weekdaysShort = window.dayNamesShort - ? window.dayNamesShort // provided by nextcloud + ? window.dayNamesShort // provided by Nextcloud : ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'] const monthsShort = window.monthNamesShort - ? window.monthNamesShort // provided by nextcloud + ? window.monthNamesShort // provided by Nextcloud : ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'] const firstDayOfWeek = window.firstDay ? window.firstDay : 0 @@ -156,7 +156,7 @@ export default { methods: { /** - * Fetch webdav node + * Fetch WebDAV node * * @return {Node} */ @@ -169,6 +169,7 @@ export default { logger.error('Error:', error) } }, + /** * Check if a share is valid before * firing the request @@ -192,19 +193,7 @@ export default { }, /** - * @param {string} date a date with YYYY-MM-DD format - * @return {Date} date - */ - parseDateString(date) { - if (!date) { - return - } - const regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i - return new Date(date.match(regex)?.pop()) - }, - - /** - * @param {Date} date + * @param {Date} date the date to format * @return {string} date a date with YYYY-MM-DD format */ formatDateToString(date) { @@ -316,11 +305,17 @@ export default { // clear any previous errors this.$delete(this.errors, propertyNames[0]) - showSuccess(t('files_sharing', 'Share {propertyName} saved', { propertyName: propertyNames[0] })) - } catch ({ message }) { + showSuccess(this.updateSuccessMessage(propertyNames)) + } catch (error) { + logger.error('Could not update share', { error, share: this.share, propertyNames }) + + const { message } = error if (message && message !== '') { this.onSyncError(propertyNames[0], message) - showError(t('files_sharing', message)) + showError(message) + } else { + // We do not have information what happened, but we should still inform the user + showError(t('files_sharing', 'Could not update share')) } } finally { this.saving = false @@ -333,6 +328,32 @@ export default { console.debug('Updated local share', this.share) }, + /** + * @param {string[]} names Properties changed + */ + updateSuccessMessage(names) { + if (names.length !== 1) { + return t('files_sharing', 'Share saved') + } + + switch (names[0]) { + case 'expireDate': + return t('files_sharing', 'Share expire date saved') + case 'hideDownload': + return t('files_sharing', 'Share hide-download state saved') + case 'label': + return t('files_sharing', 'Share label saved') + case 'note': + return t('files_sharing', 'Share note for recipient saved') + case 'password': + return t('files_sharing', 'Share password saved') + case 'permissions': + return t('files_sharing', 'Share permissions saved') + default: + return t('files_sharing', 'Share saved') + } + }, + /** * Manage sync errors *