fix: 解决邮件发送错误,但是前端显示已发送的问题

This commit is contained in:
Tim
2026-01-16 11:12:20 +08:00
parent 72a915af2e
commit 21b1c3317a
9 changed files with 165 additions and 43 deletions

View File

@@ -58,12 +58,15 @@ const submitLogin = async () => {
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username: username.value, password: password.value }),
})
const data = await res.json()
const data = await res.json().catch(() => ({}))
if (res.ok && data.token) {
setToken(data.token)
toast.success('登录成功')
registerPush()
await navigateTo('/', { replace: true })
} else if (data.reason_code === 'EMAIL_SEND_FAILED') {
const msg = data.error || data.message || res.statusText || '登录失败'
toast.error(`${res.status} ${msg} (${data.reason_code})`)
} else if (data.reason_code === 'NOT_VERIFIED') {
toast.info('当前邮箱未验证,已经为您重新发送验证码')
await navigateTo(
@@ -76,10 +79,12 @@ const submitLogin = async () => {
} else if (data.reason_code === 'NOT_APPROVED') {
await navigateTo({ path: '/signup-reason', query: { token: data.token } }, { replace: true })
} else {
toast.error(data.error || '登录失败')
const msg = data.error || data.message || res.statusText || '登录失败'
const reason = data.reason_code ? ` (${data.reason_code})` : ''
toast.error(`${res.status} ${msg}${reason}`)
}
} catch (e) {
toast.error('登录失败')
toast.error(`登录失败: ${e.message}`)
} finally {
isWaitingForLogin.value = false
}

View File

@@ -139,8 +139,7 @@ const sendVerification = async () => {
inviteToken: inviteToken.value,
}),
})
isWaitingForEmailSent.value = false
const data = await res.json()
const data = await res.json().catch(() => ({}))
if (res.ok) {
emailStep.value = 1
toast.success('验证码已发送,请查看邮箱')
@@ -149,10 +148,14 @@ const sendVerification = async () => {
if (data.field === 'email') emailError.value = data.error
if (data.field === 'password') passwordError.value = data.error
} else {
toast.error(data.error || '发送失败')
const msg = data.error || data.message || res.statusText || '发送失败'
const reason = data.reason_code ? ` (${data.reason_code})` : ''
toast.error(`${res.status} ${msg}${reason}`)
}
} catch (e) {
toast.error('发送失败')
toast.error(`发送失败: ${e.message}`)
} finally {
isWaitingForEmailSent.value = false
}
}