]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix(files_sharing): Add proper user facing messages on success
authorFerdinand Thiessen <opensource@fthiessen.de>
Mon, 14 Oct 2024 14:27:43 +0000 (16:27 +0200)
committerFerdinand Thiessen <opensource@fthiessen.de>
Wed, 16 Oct 2024 10:09:53 +0000 (12:09 +0200)
1. Use proper translated strings
2. Fix invalid use of translation message on API result
3. Log all errors

Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Pytal <24800714+Pytal@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
apps/files_sharing/src/mixins/SharesMixin.js

index 994a0fe5cb31936cff4fc0affa76732ef0e3ed30..8b467a4e0bc0493bde815a147b54d53efc3adb18 100644 (file)
@@ -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
                 *