From 192e06ebb6eae18d02284dab2a56f992e6e345ae Mon Sep 17 00:00:00 2001 From: MOON Date: Mon, 29 Jul 2024 03:20:23 +0900 Subject: [PATCH] =?UTF-8?q?:recycle:=20=EC=97=90=EB=9F=AC=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useRegisterMutation.ts | 71 +++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 23 deletions(-) diff --git a/src/hooks/useRegisterMutation.ts b/src/hooks/useRegisterMutation.ts index 72307f98..8cbe5fe7 100644 --- a/src/hooks/useRegisterMutation.ts +++ b/src/hooks/useRegisterMutation.ts @@ -15,36 +15,61 @@ const useRegisterMutation = () => { router.push('/'); }, onError: (error) => { - if (!isAxiosError(error)) { - toast({ - description: '네트워크 오류가 발생했습니다. 인터넷 연결을 확인해주세요.', - className: 'border-state-error text-state-error font-semibold', - }); - return; - } + if (isAxiosError(error)) { + const { status, data } = error.response || {}; - const { status } = error.response || {}; + if (!status) return; - if (status === 400) { - toast({ - description: '이미 사용중인 이메일입니다.', - className: 'border-state-error text-state-error font-semibold', - }); - return; - } + if (status === 400) { + const errorMessage = data?.message || '잘못된 요청입니다. 입력 값을 확인해주세요.'; + + if (errorMessage.includes('이미 사용중인 이메일')) { + toast({ + description: '이미 사용중인 이메일입니다.', + className: 'border-state-error text-state-error font-semibold', + }); + return; + } + + toast({ + description: errorMessage, + className: 'border-state-error text-state-error font-semibold', + }); + return; + } + + if (status === 500) { + const errorMessage = data?.message || '서버 오류가 발생했습니다. 잠시 후 다시 시도해주세요.'; + + // NOTE: swagger 문서에서 중복된 닉네임은 500에러와 함께 "Internal Server Error" 메시지로 응답 옴 + if (errorMessage.includes('Internal Server Error')) { + toast({ + description: '이미 존재하는 닉네임입니다.', + className: 'border-state-error text-state-error font-semibold', + }); + return; + } + + toast({ + description: errorMessage, + className: 'border-state-error text-state-error font-semibold', + }); + return; + } + + if (status >= 500) { + toast({ + description: '서버 오류가 발생했습니다. 잠시 후 다시 시도해주세요.', + className: 'border-state-error text-state-error font-semibold', + }); + return; + } - if (status === 500) { toast({ - description: '이미 존재하는 닉네임입니다.', + description: '알 수 없는 오류가 발생했습니다. 잠시 후 다시 시도해주세요.', className: 'border-state-error text-state-error font-semibold', }); - return; } - - toast({ - description: '알 수 없는 오류가 발생했습니다. 잠시 후 다시 시도해주세요.', - className: 'border-state-error text-state-error font-semibold', - }); }, }); };