diff --git a/src/Signup.vue b/src/Signup.vue index 0bc4009568d217b25a57d12b6c3112b76834a0a4..a14320aed015694cb211efe343ae749622fbd54a 100644 --- a/src/Signup.vue +++ b/src/Signup.vue @@ -10,7 +10,10 @@ v-model="formData" :language="language" @form-submitted="submitCaptchaForm" /> - + @@ -60,6 +63,7 @@ export default { showRecoveryEmailForm: false, showSuccessSection: false, language: loadState(APPLICATION_NAME, 'lang'), + processingCreation: false, } }, mounted() { @@ -102,6 +106,7 @@ export default { async submitForm(data) { try { const url = generateUrl(`/apps/${this.appName}/accounts/create`) + this.processingCreation = true await Axios.post(url, data) // If the execution reaches here, the response status is in the 2xx range @@ -110,6 +115,7 @@ export default { this.showRecoveryEmailForm = false this.showSuccessSection = true } catch (error) { + this.processingCreation = false const genericErrorMessage = 'An error occurred while creating your account!' // Handle network errors and unexpected response structures here let errorMessage = error.response ? t(this.appName, error.response.data.message) : t(this.appName, error.message) diff --git a/src/signup/RecoveryEmailForm.vue b/src/signup/RecoveryEmailForm.vue index 00bc89e9067a3af2f5d22511e8aba809108dd551..84fde0bd219ae460a24bd2a681b9c93587c00503 100644 --- a/src/signup/RecoveryEmailForm.vue +++ b/src/signup/RecoveryEmailForm.vue @@ -35,12 +35,14 @@ @@ -53,6 +55,7 @@ const APPLICATION_NAME = 'ecloud-accounts' export default { props: { value: Object, + processingCreation: Boolean, }, data() { return { diff --git a/src/signup/RegistrationForm.vue b/src/signup/RegistrationForm.vue index aee692b64bc728ea34b13bceb306d9081b8df391..34d853424d4ce76d688af8b176fa420426e56533 100644 --- a/src/signup/RegistrationForm.vue +++ b/src/signup/RegistrationForm.vue @@ -150,8 +150,14 @@
@@ -199,6 +205,7 @@ export default { { message: t(this.appName, 'Incorrect password length: Required length is 8 to 32'), regex: /.{8,32}/ }, ], isUsernameAvailable: false, + processing: false, } }, computed: { @@ -285,6 +292,7 @@ export default { } }, async submitRegistrationForm() { + this.processing = true this.validateForm(['displayname', 'username', 'password', 'repassword', 'termsandservices']) await this.checkUsername() const isFormValid = Object.values(this.validation).every(value => !value) @@ -292,6 +300,7 @@ export default { if (isFormValid) { this.$emit('form-submitted', { isFormValid }) } + this.processing = false }, onLanguageChange() { window.location.href = window.location.origin + '/apps/' + APPLICATION_NAME + '/accounts/' + this.formData.selectedLanguage + '/signup'