summaryrefslogtreecommitdiffstats
path: root/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
diff options
context:
space:
mode:
authorChristopher Ng <chrng8@gmail.com>2021-08-11 02:17:41 +0000
committerChristopher Ng <chrng8@gmail.com>2021-08-23 21:29:47 +0000
commit5e67677d948d55314680c3d337c01d6a54118ed6 (patch)
tree63af45bd85fe7d5aaa8d9b0f173c2c27658ff681 /apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
parenta8ad5a3b6e40a076f97ac4847fe6acc2b9be4c8a (diff)
downloadnextcloud-server-5e67677d948d55314680c3d337c01d6a54118ed6.tar.gz
nextcloud-server-5e67677d948d55314680c3d337c01d6a54118ed6.zip
Functional paradigm shift
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Diffstat (limited to 'apps/settings/src/components/PersonalInfo/EmailSection/Email.vue')
-rw-r--r--apps/settings/src/components/PersonalInfo/EmailSection/Email.vue87
1 files changed, 56 insertions, 31 deletions
diff --git a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
index 6c0a98d26f9..6b839ccdb55 100644
--- a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
+++ b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue
@@ -128,7 +128,7 @@ export default {
if (this.primary) {
return this.email === ''
}
- return this.email !== '' && !this.isValid()
+ return this.email !== '' && !this.isValid(this.email)
},
deleteEmailLabel() {
@@ -165,21 +165,20 @@ export default {
methods: {
onEmailChange(e) {
- this.$emit('update:email', e.target.value.trim())
- // $nextTick() ensures that references to this.email further down the chain give the correct non-outdated value
- this.$nextTick(() => this.debounceEmailChange())
+ this.$emit('update:email', e.target.value)
+ this.debounceEmailChange(e.target.value.trim())
},
- debounceEmailChange: debounce(async function() {
- if (this.$refs.email?.checkValidity() || this.email === '') {
+ debounceEmailChange: debounce(async function(email) {
+ if (this.$refs.email?.checkValidity() || email === '') {
if (this.primary) {
- await this.updatePrimaryEmail()
+ await this.updatePrimaryEmail(email)
} else {
- if (this.email) {
+ if (email) {
if (this.initialEmail === '') {
- await this.addAdditionalEmail()
+ await this.addAdditionalEmail(email)
} else {
- await this.updateAdditionalEmail()
+ await this.updateAdditionalEmail(email)
}
}
}
@@ -189,40 +188,61 @@ export default {
async deleteEmail() {
if (this.primary) {
this.$emit('update:email', '')
- this.$nextTick(async() => await this.updatePrimaryEmail())
+ await this.updatePrimaryEmail('')
} else {
await this.deleteAdditionalEmail()
}
},
- async updatePrimaryEmail() {
+ async updatePrimaryEmail(email) {
try {
- const responseData = await savePrimaryEmail(this.email)
- this.handleResponse(responseData.ocs?.meta?.status)
+ const responseData = await savePrimaryEmail(email)
+ this.handleResponse({
+ email,
+ status: responseData.ocs?.meta?.status,
+ })
} catch (e) {
- if (this.email === '') {
- this.handleResponse('error', 'Unable to delete primary email address', e)
+ if (email === '') {
+ this.handleResponse({
+ errorMessage: 'Unable to delete primary email address',
+ error: e,
+ })
} else {
- this.handleResponse('error', 'Unable to update primary email address', e)
+ this.handleResponse({
+ errorMessage: 'Unable to update primary email address',
+ error: e,
+ })
}
}
},
- async addAdditionalEmail() {
+ async addAdditionalEmail(email) {
try {
- const responseData = await saveAdditionalEmail(this.email)
- this.handleResponse(responseData.ocs?.meta?.status)
+ const responseData = await saveAdditionalEmail(email)
+ this.handleResponse({
+ email,
+ status: responseData.ocs?.meta?.status,
+ })
} catch (e) {
- this.handleResponse('error', 'Unable to add additional email address', e)
+ this.handleResponse({
+ errorMessage: 'Unable to add additional email address',
+ error: e,
+ })
}
},
- async updateAdditionalEmail() {
+ async updateAdditionalEmail(email) {
try {
- const responseData = await updateAdditionalEmail(this.initialEmail, this.email)
- this.handleResponse(responseData.ocs?.meta?.status)
+ const responseData = await updateAdditionalEmail(this.initialEmail, email)
+ this.handleResponse({
+ email,
+ status: responseData.ocs?.meta?.status,
+ })
} catch (e) {
- this.handleResponse('error', 'Unable to update additional email address', e)
+ this.handleResponse({
+ errorMessage: 'Unable to update additional email address',
+ error: e,
+ })
}
},
@@ -231,7 +251,10 @@ export default {
const responseData = await removeAdditionalEmail(this.initialEmail)
this.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)
} catch (e) {
- this.handleResponse('error', 'Unable to delete additional email address', e)
+ this.handleResponse({
+ errorMessage: 'Unable to delete additional email address',
+ error: e,
+ })
}
},
@@ -239,14 +262,16 @@ export default {
if (status === 'ok') {
this.$emit('delete-additional-email')
} else {
- this.handleResponse('error', 'Unable to delete additional email address', {})
+ this.handleResponse({
+ errorMessage: 'Unable to delete additional email address',
+ })
}
},
- handleResponse(status, errorMessage, error) {
+ handleResponse({ email, status, errorMessage, error }) {
if (status === 'ok') {
// Ensure that local initialEmail state reflects server state
- this.initialEmail = this.email
+ this.initialEmail = email
this.showCheckmarkIcon = true
setTimeout(() => { this.showCheckmarkIcon = false }, 2000)
} else {
@@ -257,8 +282,8 @@ export default {
}
},
- isValid() {
- return /^\S+$/.test(this.email)
+ isValid(email) {
+ return /^\S+$/.test(email)
},
onScopeChange(scope) {