summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkSignup.vue
diff options
context:
space:
mode:
authorRyotaK <49341894+Ry0taK@users.noreply.github.com>2023-03-08 16:32:13 +0900
committerGitHub <noreply@github.com>2023-03-08 16:32:13 +0900
commit116dd097bda66196d69d81cf42c8e0bb7f32b141 (patch)
tree2e557613e0f1526dce4c4a9e6b33fe0e6870e59d /packages/frontend/src/components/MkSignup.vue
parentfeat: Reaction acceptance (#10256) (diff)
downloadmisskey-116dd097bda66196d69d81cf42c8e0bb7f32b141.tar.gz
misskey-116dd097bda66196d69d81cf42c8e0bb7f32b141.tar.bz2
misskey-116dd097bda66196d69d81cf42c8e0bb7f32b141.zip
fix: 登録フォームにおける競合状態を修正 (#10267)
* fix: 登録フォームにおける競合状態を修正 * エラーを修正
Diffstat (limited to 'packages/frontend/src/components/MkSignup.vue')
-rw-r--r--packages/frontend/src/components/MkSignup.vue26
1 files changed, 20 insertions, 6 deletions
diff --git a/packages/frontend/src/components/MkSignup.vue b/packages/frontend/src/components/MkSignup.vue
index fa69481394..22a8063809 100644
--- a/packages/frontend/src/components/MkSignup.vue
+++ b/packages/frontend/src/components/MkSignup.vue
@@ -110,6 +110,8 @@ let ToSAgreement: boolean = $ref(false);
let hCaptchaResponse = $ref(null);
let reCaptchaResponse = $ref(null);
let turnstileResponse = $ref(null);
+let usernameAbortController: null | AbortController = $ref(null);
+let emailAbortController: null | AbortController = $ref(null);
const shouldDisableSubmitting = $computed((): boolean => {
return submitting ||
@@ -141,14 +143,20 @@ function onChangeUsername(): void {
}
}
+ if (usernameAbortController != null) {
+ usernameAbortController.abort();
+ }
usernameState = 'wait';
+ usernameAbortController = new AbortController();
os.api('username/available', {
username,
- }).then(result => {
+ }, undefined, usernameAbortController.signal).then(result => {
usernameState = result.available ? 'ok' : 'unavailable';
- }).catch(() => {
- usernameState = 'error';
+ }).catch((err) => {
+ if (err.name !== 'AbortError') {
+ usernameState = 'error';
+ }
});
}
@@ -158,11 +166,15 @@ function onChangeEmail(): void {
return;
}
+ if (emailAbortController != null) {
+ emailAbortController.abort();
+ }
emailState = 'wait';
+ emailAbortController = new AbortController();
os.api('email-address/available', {
emailAddress: email,
- }).then(result => {
+ }, undefined, emailAbortController.signal).then(result => {
emailState = result.available ? 'ok' :
result.reason === 'used' ? 'unavailable:used' :
result.reason === 'format' ? 'unavailable:format' :
@@ -170,8 +182,10 @@ function onChangeEmail(): void {
result.reason === 'mx' ? 'unavailable:mx' :
result.reason === 'smtp' ? 'unavailable:smtp' :
'unavailable';
- }).catch(() => {
- emailState = 'error';
+ }).catch((err) => {
+ if (err.name !== 'AbortError') {
+ emailState = 'error';
+ }
});
}