Browse Source

Merge pull request #31345 from nextcloud/fix/31164/delete-additional-email

Fix deletion of additional emails
Vincent Petry 1 year ago
parent
commit
4ecedffb5b

+ 0 - 1
apps/settings/src/components/PersonalInfo/EmailSection/Email.vue

@@ -51,7 +51,6 @@
 
 				<Actions class="email__actions"
 					:aria-label="t('settings', 'Email options')"
-					:disabled="deleteDisabled"
 					:force-menu="true">
 					<ActionButton :aria-label="deleteEmailLabel"
 						:close-after-click="true"

+ 8 - 3
apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue

@@ -46,8 +46,9 @@
 
 		<template v-if="additionalEmails.length">
 			<em class="additional-emails-label">{{ t('settings', 'Additional emails') }}</em>
+			<!-- TODO use unique key for additional email when uniqueness can be guaranteed, see https://github.com/nextcloud/server/issues/26866 -->
 			<Email v-for="(additionalEmail, index) in additionalEmails"
-				:key="index"
+				:key="additionalEmail.key"
 				:index="index"
 				:scope.sync="additionalEmail.scope"
 				:email.sync="additionalEmail.value"
@@ -85,7 +86,7 @@ export default {
 	data() {
 		return {
 			accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,
-			additionalEmails,
+			additionalEmails: additionalEmails.map(properties => ({ ...properties, key: this.generateUniqueKey() })),
 			displayNameChangeSupported,
 			primaryEmail,
 			savePrimaryEmailScope,
@@ -119,7 +120,7 @@ export default {
 	methods: {
 		onAddAdditionalEmail() {
 			if (this.isValidSection) {
-				this.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE })
+				this.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE, key: this.generateUniqueKey() })
 			}
 		},
 
@@ -184,6 +185,10 @@ export default {
 				this.logger.error(errorMessage, error)
 			}
 		},
+
+		generateUniqueKey() {
+			return Math.random().toString(36).substring(2)
+		},
 	},
 }
 </script>

File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-personal-info.js


File diff suppressed because it is too large
+ 0 - 0
dist/settings-vue-settings-personal-info.js.map


Some files were not shown because too many files changed in this diff