From bcb9f1f8031d602dd0a6869050230fe941b64d1f Mon Sep 17 00:00:00 2001 From: wancat Date: Wed, 1 Nov 2023 23:30:28 +0800 Subject: [PATCH] fix: update frontend error handling --- app/src/utils/auth.js | 4 ++++ app/src/views/RegisterPage.vue | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/utils/auth.js b/app/src/utils/auth.js index cd9ef75..8dccb81 100644 --- a/app/src/utils/auth.js +++ b/app/src/utils/auth.js @@ -17,6 +17,7 @@ export const login = async (username, password) => { await api.post('/auth/login', { username, password }) return true } catch (err) { + if (!err.response) throw err const { status } = err.response switch (status) { case 401: @@ -43,6 +44,7 @@ export const register = async (username, email, password) => { }) return true } catch (err) { + if (!err.response) throw err const { status } = err.response if (status === 429) { throw new TooManyRequestsError(err.response.data.message) @@ -78,6 +80,7 @@ export const checkUsername = async (username) => { }) return true } catch (err) { + if (!err.response) throw err const { status } = err.response if (status === 429) { throw new TooManyRequestsError('Too many requests') @@ -93,6 +96,7 @@ export const chooseUsername = async (username) => { try { await api.post('/auth/register-from-session', { username }) } catch (err) { + if (!err.response) throw err switch (err.response?.status) { case 400: throw new ValidationError('Username is already taken') diff --git a/app/src/views/RegisterPage.vue b/app/src/views/RegisterPage.vue index 252281f..39918d8 100644 --- a/app/src/views/RegisterPage.vue +++ b/app/src/views/RegisterPage.vue @@ -29,6 +29,7 @@ function handleRegister({ username, email, password, success, error }) { return } console.error(err) + error('Something went wrong.') }) } @@ -53,8 +54,12 @@ async function check({ username, email, password, error }) { try { await checkUsername(username) } catch (err) { - if (err.response?.status === 400) { - error('Invalid username.') + if (err instanceof ValidationError) { + error(err.message) + return + } + if (err instanceof TooManyRequestsError) { + error('Too many requests. Try again in 2 minutes.') return } console.error(err)