summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2024-10-10 14:05:20 +0900
committerGitHub <noreply@github.com>2024-10-10 14:05:20 +0900
commita624546812af072d23579bce81f85668f9a97c09 (patch)
treedf1cd8a79ecacf9b01e6307d67f65f6a097110ed /packages/frontend/src/components
parentrefactor(frontend): prefix css variables (#14725) (diff)
downloadmisskey-a624546812af072d23579bce81f85668f9a97c09.tar.gz
misskey-a624546812af072d23579bce81f85668f9a97c09.tar.bz2
misskey-a624546812af072d23579bce81f85668f9a97c09.zip
fix(frontend): ユーザー登録完了時にサインインAPIを別途使用していたのを修正 (#14738)
* fix(frontend): ユーザー登録完了時にサインインAPIを別途使用していたのを修正 * emitされるオブジェクトの型を変更したことに伴う修正 * Update Changelog
Diffstat (limited to 'packages/frontend/src/components')
-rw-r--r--packages/frontend/src/components/MkSignin.vue4
-rw-r--r--packages/frontend/src/components/MkSigninDialog.vue5
-rw-r--r--packages/frontend/src/components/MkSignupDialog.form.vue82
-rw-r--r--packages/frontend/src/components/MkSignupDialog.vue4
-rw-r--r--packages/frontend/src/components/MkUserCardMini.vue2
5 files changed, 54 insertions, 43 deletions
diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue
index a79d7cf07a..a773cefdab 100644
--- a/packages/frontend/src/components/MkSignin.vue
+++ b/packages/frontend/src/components/MkSignin.vue
@@ -83,7 +83,7 @@ import type { AuthenticationPublicKeyCredential } from '@github/webauthn-json/br
import type { OpenOnRemoteOptions } from '@/scripts/please-login.js';
const emit = defineEmits<{
- (ev: 'login', v: Misskey.entities.SigninFlowResponse): void;
+ (ev: 'login', v: Misskey.entities.SigninFlowResponse & { finished: true }): void;
}>();
const props = withDefaults(defineProps<{
@@ -276,7 +276,7 @@ async function tryLogin(req: Partial<Misskey.entities.SigninFlowRequest>): Promi
});
}
-async function onLoginSucceeded(res: Misskey.entities.SigninFlowResponse & { finished: true; }) {
+async function onLoginSucceeded(res: Misskey.entities.SigninFlowResponse & { finished: true }) {
if (props.autoSet) {
await login(res.i);
}
diff --git a/packages/frontend/src/components/MkSigninDialog.vue b/packages/frontend/src/components/MkSigninDialog.vue
index 2aa11ac319..51dea960aa 100644
--- a/packages/frontend/src/components/MkSigninDialog.vue
+++ b/packages/frontend/src/components/MkSigninDialog.vue
@@ -23,6 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
+import * as Misskey from 'misskey-js';
import { shallowRef } from 'vue';
import type { OpenOnRemoteOptions } from '@/scripts/please-login.js';
import MkSignin from '@/components/MkSignin.vue';
@@ -40,7 +41,7 @@ withDefaults(defineProps<{
});
const emit = defineEmits<{
- (ev: 'done', v: any): void;
+ (ev: 'done', v: Misskey.entities.SigninFlowResponse & { finished: true }): void;
(ev: 'closed'): void;
(ev: 'cancelled'): void;
}>();
@@ -52,7 +53,7 @@ function onClose() {
if (modal.value) modal.value.close();
}
-function onLogin(res) {
+function onLogin(res: Misskey.entities.SigninFlowResponse & { finished: true }) {
emit('done', res);
if (modal.value) modal.value.close();
}
diff --git a/packages/frontend/src/components/MkSignupDialog.form.vue b/packages/frontend/src/components/MkSignupDialog.form.vue
index a0c5488983..ffb5551ff3 100644
--- a/packages/frontend/src/components/MkSignupDialog.form.vue
+++ b/packages/frontend/src/components/MkSignupDialog.form.vue
@@ -98,7 +98,7 @@ const props = withDefaults(defineProps<{
});
const emit = defineEmits<{
- (ev: 'signup', user: Misskey.entities.SigninFlowResponse): void;
+ (ev: 'signup', user: Misskey.entities.SignupResponse): void;
(ev: 'signupEmailPending'): void;
}>();
@@ -250,18 +250,30 @@ async function onSubmit(): Promise<void> {
if (submitting.value) return;
submitting.value = true;
- try {
- await misskeyApi('signup', {
- username: username.value,
- password: password.value,
- emailAddress: email.value,
- invitationCode: invitationCode.value,
- 'hcaptcha-response': hCaptchaResponse.value,
- 'm-captcha-response': mCaptchaResponse.value,
- 'g-recaptcha-response': reCaptchaResponse.value,
- 'turnstile-response': turnstileResponse.value,
- });
- if (instance.emailRequiredForSignup) {
+ const signupPayload: Misskey.entities.SignupRequest = {
+ username: username.value,
+ password: password.value,
+ emailAddress: email.value,
+ invitationCode: invitationCode.value,
+ 'hcaptcha-response': hCaptchaResponse.value,
+ 'm-captcha-response': mCaptchaResponse.value,
+ 'g-recaptcha-response': reCaptchaResponse.value,
+ 'turnstile-response': turnstileResponse.value,
+ };
+
+ const res = await fetch(`${config.apiUrl}/signup`, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(signupPayload),
+ }).catch(() => {
+ onSignupApiError();
+ return null;
+ });
+
+ if (res) {
+ if (res.status === 204 || instance.emailRequiredForSignup) {
os.alert({
type: 'success',
title: i18n.ts._signup.almostThere,
@@ -269,33 +281,31 @@ async function onSubmit(): Promise<void> {
});
emit('signupEmailPending');
} else {
- const res = await misskeyApi('signin-flow', {
- username: username.value,
- password: password.value,
- });
- emit('signup', res);
+ const resJson = (await res.json()) as Misskey.entities.SignupResponse;
+ if (_DEV_) console.log(resJson);
+
+ emit('signup', resJson);
- if (props.autoSet && res.finished) {
- return login(res.i);
- } else {
- os.alert({
- type: 'error',
- text: i18n.ts.somethingHappened,
- });
+ if (props.autoSet) {
+ await login(resJson.token);
}
}
- } catch {
- submitting.value = false;
- hcaptcha.value?.reset?.();
- mcaptcha.value?.reset?.();
- recaptcha.value?.reset?.();
- turnstile.value?.reset?.();
-
- os.alert({
- type: 'error',
- text: i18n.ts.somethingHappened,
- });
}
+
+ submitting.value = false;
+}
+
+function onSignupApiError() {
+ submitting.value = false;
+ hcaptcha.value?.reset?.();
+ mcaptcha.value?.reset?.();
+ recaptcha.value?.reset?.();
+ turnstile.value?.reset?.();
+
+ os.alert({
+ type: 'error',
+ text: i18n.ts.somethingHappened,
+ });
}
</script>
diff --git a/packages/frontend/src/components/MkSignupDialog.vue b/packages/frontend/src/components/MkSignupDialog.vue
index 4cccd99492..f240e6dc46 100644
--- a/packages/frontend/src/components/MkSignupDialog.vue
+++ b/packages/frontend/src/components/MkSignupDialog.vue
@@ -47,7 +47,7 @@ const props = withDefaults(defineProps<{
});
const emit = defineEmits<{
- (ev: 'done', res: Misskey.entities.SigninFlowResponse): void;
+ (ev: 'done', res: Misskey.entities.SignupResponse): void;
(ev: 'closed'): void;
}>();
@@ -55,7 +55,7 @@ const dialog = shallowRef<InstanceType<typeof MkModalWindow>>();
const isAcceptedServerRule = ref(false);
-function onSignup(res: Misskey.entities.SigninFlowResponse) {
+function onSignup(res: Misskey.entities.SignupResponse) {
emit('done', res);
dialog.value?.close();
}
diff --git a/packages/frontend/src/components/MkUserCardMini.vue b/packages/frontend/src/components/MkUserCardMini.vue
index b333722dc2..7a2e878931 100644
--- a/packages/frontend/src/components/MkUserCardMini.vue
+++ b/packages/frontend/src/components/MkUserCardMini.vue
@@ -23,7 +23,7 @@ import { acct } from '@/filters/user.js';
const props = withDefaults(defineProps<{
user: Misskey.entities.User;
- withChart: boolean;
+ withChart?: boolean;
}>(), {
withChart: true,
});