From 7ca5a891fcbfbc04372179ad43b3b9190f22f3b8 Mon Sep 17 00:00:00 2001 From: Eugene Kim <67894159+eugene028@users.noreply.github.com> Date: Mon, 12 Aug 2024 02:01:13 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[Deploy]:=20=EB=A7=88=EC=9D=B4=EB=84=88=20U?= =?UTF-8?q?I=20=EC=9D=B4=EC=8A=88=20=EC=88=98=EC=A0=95=20(2.0.1)=20(#99)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: cookie test * fix: 개발 환경 https 설정 제거 * chore: mkcert 패키지 제거 * chore: PR 템플릿 생성 * [Chore] 패키지 매니저를 pnpm으로 변경해요. (#52) * chore: 패키지 매니저 pnpm으로 변경 * chore: yaml파일 삭제 * fix : eslint,prettier 제대로 되게 수정 * [Chore] client 서비스에 wow-design 시스템을 적용해요. (#56) * feature: wowds로 마이그레이션 * fix: 디자인 시스템 마이그레이션 * feature: wow design system으로 마이그레이션 * fix: wowds 기본 CSS 설치 * feat : 디스코드 튜토리얼 UI 1차 반영 * feat : 가이드까지 UI 완성 * feat : width 에도 반영 * fix : spaceKet 로 타입 수정 * feat : spacing 토큰 변경 * feat : ㄹ리뷰 반영 * feat : 디스코드 api 연결 * feat : Image 컴포넌트 타입 수정 * fix: space 토큰 수정 * [Feature] github 로그인 페이지를 2차 MVP 페이지에 맞게 수정해요. (#62) * feature: github 로그인 페이지 생성 * fix: 패키지 매니저 구성 변경 * fix: 패키지 구성 변경 * refactor : 리팩토링 및 변수명 변경 * fix: 하드코딩된 토큰 환경변수에 저장 * Create CODEOWNERS * [Feature] 대시보드 2차 MVP DTO에 맞게 뷰를 수정해요. (#57) * chore: 패키지 매니저 pnpm으로 변경 * chore: yaml파일 삭제 * feature: 새롭게 바뀐 DTO 반영 * chore: 컴포넌트 단순화 분리 작업 * feature: Mypage status 생성 * feature: wowds로 마이그레이션 * fix: 디자인 시스템 마이그레이션 * feature: wow design system으로 마이그레이션 * fix: 이것저것 반영 * feature: 대시보드 2차 MVP 틀 구현 * fix: 메인화면 네임 수정 * #51: #51: WIP on feature/#51 * feature: helpBox 생성 * fix: 서버 번경 사항 챙기기 * feat: 정회원 버튼 생성 * feat: react-hook-form 기본 세팅 * feat: signup 페이지 완성 * fix: 백엔드 DTO 변경에 따른 반영 * fix: 코드리뷰 반영 * fix: 코드리뷰 반영 - 랜더링 최적화 * fix: 패키지 변경사항 반영 * [Feature] 기본 회원 정보를 받을 수 있는 Signup 페이지를 2차 MVP에 맞게 수정해요. (#60) * chore: 패키지 매니저 pnpm으로 변경 * chore: yaml파일 삭제 * feature: 새롭게 바뀐 DTO 반영 * chore: 컴포넌트 단순화 분리 작업 * feature: Mypage status 생성 * feature: wowds로 마이그레이션 * fix: 디자인 시스템 마이그레이션 * feature: wow design system으로 마이그레이션 * fix: 이것저것 반영 * feature: 대시보드 2차 MVP 틀 구현 * fix: 메인화면 네임 수정 * #51: #51: WIP on feature/#51 * feature: helpBox 생성 * fix: 서버 번경 사항 챙기기 * feat: 정회원 버튼 생성 * feat : wow ui 설치 * feat: react-hook-form 기본 세팅 * fix: 백엔드 api 명세 변경에 따른 프론트 수정 사항 반영 * fix: progressBar wow-ui로 변경 * fix: helpBox 안맞는 부분 수정 * fix: accesstoken 지우기 * feat: signup 페이지 완성 * fix: 코드리뷰 반영 * fix : pnpm install * refactor : query 관련 훅으로 리팩토링, Space 컴포넌트 수정 * fix: getValues 로 수정 * refactor: react-hook-form 의 pattern 사용해서 유효성 검증 * feat : 라우팅 반영 * style : width 100% 수정 * [Feature] 정회원 지원하기 액션시트를 생성하고, API를 연결해요. (#63) * chore: 패키지 매니저 pnpm으로 변경 * chore: yaml파일 삭제 * feature: 새롭게 바뀐 DTO 반영 * chore: 컴포넌트 단순화 분리 작업 * feature: Mypage status 생성 * feature: wowds로 마이그레이션 * fix: 디자인 시스템 마이그레이션 * feature: wow design system으로 마이그레이션 * fix: 이것저것 반영 * feature: 대시보드 2차 MVP 틀 구현 * fix: 메인화면 네임 수정 * #51: #51: WIP on feature/#51 * feature: helpBox 생성 * fix: 서버 번경 사항 챙기기 * feat: 정회원 버튼 생성 * feat: BottomSheet context 생성 * feat : wow ui 설치 * feat: react-hook-form 기본 세팅 * fix: 백엔드 api 명세 변경에 따른 프론트 수정 사항 반영 * fix: progressBar wow-ui로 변경 * fix: helpBox 안맞는 부분 수정 * fix: accesstoken 지우기 * chore: 패키지 업데이트 * feat: BottomSheet 기본 틀 잡기 * feat: 바텀시트 기본 틀 다잡아두기 * feature: API 연결 * fix: pc화면에서 어색해보이지 않도록 가운데 정렬 * fix: 준회원일 경우에만 가입 BottomSheet 보이게끔 * fix: merge 삑난거 수정하기 * fix: 코드리뷰 반영 * fix: 코드리뷰 반영 * fix: 코드리뷰 반영 * fix: bottomSheet overlay fixed로 변경하기 * fix: 코드리뷰 반영 * [Feature] Bevy 가입 인증 절차를 생성해요. (#70) * feat: 기본 Bevy 뷰 생성 * fix: useMutation으로 API 분리 * fix: 사용하지 않는 파일 삭제 * [Feature] 홍익대학교 Gmail을 통해 재학생 인증 기능을 만들어요. (#67) * feat: 인증하기 초기 화면 디자인 변경 * fix : 필요없는 파일 삭제 * fix: API 객체로 변경 * fix: 이메일 인증 화면 변경하기 * feat: 재학생 인증 실패/성공 화면 만들기 * fix: 백엔드 API 반영 전 상태로 되돌리기 * fix: 코드리뷰 작성 * fix: preventReload 적용 * fix: 버튼 삑나간거 고치기 * fix: media query 중단점 수정 * fix: wowds ui 업데이트 * fix: code를 서버에게 보내요. * feat: 회비 납부 플로우 추가 * feat: 토스페이먼츠 결제하기 라우팅 * feat: 토스페이먼츠 클라이언트키 임시등록 * feat: 총 결제금액 표시 * feat: 결제 성공 시 마이페이지로 리다이렉트 * chore: 결제 위젯 연동에 필요한 패키지 설치 * fix: PENDING 상태일 때만 결제창 띄움 * fix: 총 결제 금액 임시 하드코딩 * feat: coupon API 추가 * design: 결제창 레이아웃 변경 * feat: 결제 성공 및 실패 화면, 라우팅 * chore: wowds-ui 설치 * feat: wowds로 마이그레이션 * design: wowds UI 적용 * fix: Box 테두리 색상 임시 변경 * feat: 결제정보 전달 API * feat: 유저정보 API 임시설정 * feat: 쿠폰 타입 변경 * feat: 토스페이먼츠 최신 API 임시 구현 사항 * fix: API post -> get * chore: payments 라이브러리 업데이트 * feat: 토스페이먼츠 위젯 라이브러리 업데이트에 의한 기능구현 변경 * feat: useProduct hook으로 결제 관리 * fix: 결제 실패 시 쿠폰 적용 페이지로 라우팅 * chore: react-secure-storage 설치 * feat: ENV 추가 * feat: 결제 정보 암호화, 로컬스토리지 저장 * fix: 할인금액이 있을 때만 노출 * feat: 결제 실패 시 로컬스토리지 초기화 * fix: 스토리지 리턴타입 단언 * fix: 토스페이먼츠 타입 any 허용 * refactor: 회비 납부 페이지 컴포넌트 분리 * feat: 임시 주문과 결제 승인 API 구분하기 * fix: 토스페이먼츠 테스트를 위한 로직 수정 * feat: 주문완료 API 추가 * design: 회비 납부 UI 수정 * feat: 쿠폰 정보 추가 * refactor: 라우팅 없이 결제 위젯 연결 * fix: 결제 실패 시 라우팅 변경 * fix: 스토리지 관련 로직 삭제 * fix: 스토리지 관련 로직 삭제 * refactor: useProduct 훅, 관련 로직 리렌더링 최소화 리팩토링 * fix: 스토리지 clear 로직 삭제 * fix: 테스트용 API 제거 * chore: 주석 제거 * chore: console.log 삭제 * chore: wowds-ui 버전업 * refactor: 쿠폰 드롭다운 * feat: 무료 주문 생성 API * feat: 주문 생성 API mutation hook으로 변경, 총 가격에 따른 API 조건부 반환 * feat: 주문 완료 API mutation hook으로 변경 * fix : 빌드 에러 수정 , ci 작성 * fix : ci 수정 * fix :svg 속성, 필요없는 컴포넌트 삭제 * fix : 안쓰는 api 삭제 * [Fix]: 디스코드 연동 마이너 이슈 수정 (#75) * fix: 디스코드 합류 체크 관련 API 호출 개선 및 문구 변경 * fix: 메서드 잘못된거 하나 슬쩍 고치기 * fix: API 문서 수정 * [Fix]: Signup 페이지 마이너 UI 이슈 수정 (#74) * fix: signup 마이너 UI 이슈 수정 * fix: 안쓰는 스타일 객체 일단 삭제 * feat: 푸터 텍스트 로고 추가 * feat: 푸터 UI * fix: 기존 홈 온보딩 이미지 삭제 * feat : qa반영 * fix : 불필요한 스타일 삭제, 텍필에 100% 추가 * [Refactor] : 학교 이메일 인증 페이지 QA 개선 반영 (#80) * fix: email 인증 error코드 중복 제거 * refac: 스팸메일함 안내문구 추가 * chore: 채널톡 위젯 삭제 * [Refactor] : Signup 페이지 QA 개선 반영 (#79) * fix: 하단 absolute 처리 * fix: bottom간격 해결 * fix: signup QA * chore: wow-ui 버전 업데이트 * [Feature]: Sentry 세팅 (#81) * chore: sentry 패키지 기본 설치 * feat: Sentry ErrorBoundary 추가 * fix: sentry 관련 기본적인 세팅 완료 * fix: json 문법 수정 * fix: Chatbot 삭제 * fix: 브라우저 설정 환경에 따른 sentry 세팅 * fix: 필요없는 dev 세팅 환경 지우기 * fix: 논리 테스트 (#82) * [Chore]: Sentry 논리 되돌리기 (#83) * fix: 논리 테스트 * fix: sentry 논리판단 되돌리기 * [Chore] : 빌드로그에서 vercel 환경변수 볼 수 있도록 하기 (#84) * fix: 논리 테스트 * fix: sentry 논리판단 되돌리기 * chore: console 테스트 * fix: 로딩 스피너 추가 및 기존 패키지 제거 (#89) * [Refactor]: 마이너 UI 이슈 수정 (#90) * fix: textfield 가로길이 안맞는 부분 수정 * fix: scroll 반 쯤 내려가 있는 문제 해결 * [Refactor] : 결제 페이지에 준회원이 아닌 경우 접근하지 못하도록 해요. (#88) * fix: payment 가드 생성 * fix: 현재 모집기간 닫혀있을때 결제화면 접근 못함 * refac: 토스페이먼츠 접근 화면 가드 꼼꼼하게 다듬기 * fix: data undefined 처리 * fix: payment 성공화면 access화면 생성 * [Refactor]: 학교 이메일 인증 정책을 변경해요 (#91) * fix: email 인증 error코드 중복 제거 * refac: 스팸메일함 안내문구 추가 * chore: 채널톡 위젯 삭제 * fix: 학회원 모집 마감 처리 Box 생성 * fix: 이메일 인증 in_progress 단계 추가 * fix: 이미 사용하고 있는 타입으로 변경 * [Fix] 토스페이먼츠 QA 개선 반영 (#93) * [Fix]: 서버 로그인 로직 변경에 따른 AccessToken, RefeshToken 쿠키 세팅 제거 및 landingStatus 제거 (#87) * fix: 논리 테스트 * fix: sentry 논리판단 되돌리기 * chore: console 테스트 * fix: cookie base-url 상위 도메인으로 변경 * fix: landingStatus 로직 제거 * fix: 메인화면 지원하기 버튼 dashboard로 라우트 * fix:landingStatus 삭제 및 쿠키로직 수정 * fix: landingStatus 관련된 모든 로직 제거 * fix: 쿠키 판단 로직 재건 * fix: 필요없는 guard 모두 삭제 * fix: 리다이렉트 정리 * fix: 로그인 유지 시간 sessionStorage에서 확인 * fix: 쿠키 관련 도메인 로직 모두 삭제 * fix: Cookie 관련 모든 로직 삭제 * fix: 빌드에러 터지는거 해결 * fix: 서버에서 refresh갱신 실패할때 로그아웃 처리 * fix: 403 에러 왔을때 세션 만료 * fix: 모집 기간 마감 예외처리 * fix: 파일 확장명 변경 * [Fix] 토스페이먼츠 결제성공 페이지 가드 임시삭제 (#94) * fix: PaymentsSuccess 가드 임시 삭제 * fix: 전체 금액이 0 미만일 때 0으로 처리 * fix: 사용하지 않는 import 삭제 * fix: 디스코드 관련 qa 반영 * feat : 인증을 완료한 경우에는 대시보드로 라우팅 하는 가드 설정 * [Fix]: 0807 QA 반영 (#95) * fix: navigate 정상화 * fix: 모집 차수 깨져 보이는 현상 개선 * fix: 모집 기간 아닐 때 에러 화면 제거 * fix: signup화면 제출 문구 수정 * refac: 이메일 도메인 직접 입력할 수 있도록 변경 * feat: 로그아웃 로직 붙임 * fix: wowds-ui 버전 업데이트 * fix: username 닉네임 잘못된 부분 수정 * fix: 대기중 문구만 뜨는 것 고치기 * fix: console log 삭제 * fix: 합류 확인 여부 리팩토링 * fix: 로그인 코드 변경 * fix:joinServer 안내문구 * fix:빌드실패 고치기 * fix:서버 status 변경사항 반영 * fix: build 에러 해결 * fix: paymentStatus enum 변경 * [Fix] 토스페이먼츠 쿠폰 관련 QA 사항 반영 (#97) * feat: 총 금액이 0원 이하일 때와 아닐 때의 로직 분리 * fix: 로직 수정 및 에러 토스트 메시지로 변환 * fix: 톤매너 정립 --------- Co-authored-by: Eugene Kim * fix: 상용배포 마이너 UI 이슈 --------- Co-authored-by: 강나연 Co-authored-by: 강나연 <103591752+kongnayeon@users.noreply.github.com> Co-authored-by: SeieunYoo Co-authored-by: SeieunYoo <101736358+SeieunYoo@users.noreply.github.com> Co-authored-by: hamo-o Co-authored-by: 이현영 <89445100+hamo-o@users.noreply.github.com> --- src/App.tsx | 7 ++++- src/components/myPage/JoinRegularMember.tsx | 2 +- src/pages/StudentVerification.tsx | 5 ++-- .../StudentVerificationServerRedirect.tsx | 26 +------------------ 4 files changed, 11 insertions(+), 29 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index b952095..06d163e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,6 +4,7 @@ import { OnboardingLogo1, OnboardingLogo2 } from '@/assets/Onboarding'; +import { isAuthenticated } from '@/utils/auth'; import { Flex, Space, Text } from '@/components/common/Wrapper'; import { InformationBox } from '@/components/onboarding/InformationBox'; import { color, typography } from 'wowds-tokens'; @@ -160,7 +161,11 @@ function App() { - navigate(RoutePath.Dashboard)}> + { + if (isAuthenticated()) navigate(RoutePath.Dashboard); + else navigate(RoutePath.GithubSignin); + }}> 가입하기 diff --git a/src/components/myPage/JoinRegularMember.tsx b/src/components/myPage/JoinRegularMember.tsx index 6286d03..5c324c4 100644 --- a/src/components/myPage/JoinRegularMember.tsx +++ b/src/components/myPage/JoinRegularMember.tsx @@ -33,7 +33,7 @@ const JoinRegularMember = ({ paymentStatus }: { paymentStatus: Status }) => { status={paymentStatus === 'UNSATISFIED' ? 'error' : 'success'} subText={ paymentStatus === 'UNSATISFIED' - ? '이제 카드·계좌이체 등 여러 결제수단을 지원해요.' + ? '카드·계좌이체 등 여러 결제수단을 지원해요.' : undefined } /> diff --git a/src/pages/StudentVerification.tsx b/src/pages/StudentVerification.tsx index a1a08cb..58ebe3c 100644 --- a/src/pages/StudentVerification.tsx +++ b/src/pages/StudentVerification.tsx @@ -74,12 +74,13 @@ export const StudentVerification = () => { @@ -176,6 +177,7 @@ const ButtonContainer = styled.div` const EmailContainer = styled.div` display: flex; flex-direction: row; + max-width: 260px; align-items: center; gap: ${space.xs}; `; @@ -183,5 +185,4 @@ const EmailContainer = styled.div` const TextFieldWrapper = styled.div` flex: 1; height: 84.8px; - width: 50%; `; diff --git a/src/pages/redirect/StudentVerificationServerRedirect.tsx b/src/pages/redirect/StudentVerificationServerRedirect.tsx index b2c8598..8d252d7 100644 --- a/src/pages/redirect/StudentVerificationServerRedirect.tsx +++ b/src/pages/redirect/StudentVerificationServerRedirect.tsx @@ -1,19 +1,16 @@ import { Text, Flex } from '@/components/common/Wrapper'; import { useVerifyStudentEmail } from '@/hooks/mutation'; import { color } from 'wowds-tokens'; -import Button from 'wowds-ui/Button'; import GlobalSize from '@/constants/globalSize'; import { media } from '@/styles'; import styled from '@emotion/styled'; import { css } from '@emotion/react'; -import { useNavigate, useSearchParams } from 'react-router-dom'; -import RoutePath from '@/routes/routePath'; +import { useSearchParams } from 'react-router-dom'; import { useLayoutEffect } from 'react'; import LoadingSpinner from '@/components/common/LoadingSpinner'; export const StudentVerificationServerRedirect = () => { const [searchParams] = useSearchParams(); - const navigate = useNavigate(); const token = searchParams.get('token'); const { isSuccess, isPending, verifyStudentMail } = useVerifyStudentEmail(); @@ -21,7 +18,6 @@ export const StudentVerificationServerRedirect = () => { if (token) verifyStudentMail(token); }, [token, verifyStudentMail]); - //TODO: 추후 로딩 스피너 추가 필요 return ( {isPending ? ( @@ -46,16 +42,6 @@ export const StudentVerificationServerRedirect = () => { )} - - - )} @@ -90,13 +76,3 @@ const TextContainer = styled.div` flex-direction: column; align-items: center; `; - -const ButtonContainer = styled.div` - position: absolute; - bottom: 1.75rem; - padding: 0px 0.75rem; - width: 100%; - display: flex; - flex-direction: column; - align-items: center; -`; From 5e49715b021987945332da46a27dd1634cc3f13f Mon Sep 17 00:00:00 2001 From: Eugene Kim <67894159+eugene028@users.noreply.github.com> Date: Mon, 12 Aug 2024 02:07:57 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[Deploy]:=20=EA=B2=B0=EC=A0=9C=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=20=EC=9D=B4=ED=9B=84=20=EB=8C=80=EC=8B=9C=EB=B3=B4?= =?UTF-8?q?=EB=93=9C=20=EC=BF=BC=EB=A6=AC=ED=82=A4=20=EB=A7=8C=EB=A3=8C=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20(2.0.2)=20(#100)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: cookie test * fix: 개발 환경 https 설정 제거 * chore: mkcert 패키지 제거 * chore: PR 템플릿 생성 * [Chore] 패키지 매니저를 pnpm으로 변경해요. (#52) * chore: 패키지 매니저 pnpm으로 변경 * chore: yaml파일 삭제 * fix : eslint,prettier 제대로 되게 수정 * [Chore] client 서비스에 wow-design 시스템을 적용해요. (#56) * feature: wowds로 마이그레이션 * fix: 디자인 시스템 마이그레이션 * feature: wow design system으로 마이그레이션 * fix: wowds 기본 CSS 설치 * feat : 디스코드 튜토리얼 UI 1차 반영 * feat : 가이드까지 UI 완성 * feat : width 에도 반영 * fix : spaceKet 로 타입 수정 * feat : spacing 토큰 변경 * feat : ㄹ리뷰 반영 * feat : 디스코드 api 연결 * feat : Image 컴포넌트 타입 수정 * fix: space 토큰 수정 * [Feature] github 로그인 페이지를 2차 MVP 페이지에 맞게 수정해요. (#62) * feature: github 로그인 페이지 생성 * fix: 패키지 매니저 구성 변경 * fix: 패키지 구성 변경 * refactor : 리팩토링 및 변수명 변경 * fix: 하드코딩된 토큰 환경변수에 저장 * Create CODEOWNERS * [Feature] 대시보드 2차 MVP DTO에 맞게 뷰를 수정해요. (#57) * chore: 패키지 매니저 pnpm으로 변경 * chore: yaml파일 삭제 * feature: 새롭게 바뀐 DTO 반영 * chore: 컴포넌트 단순화 분리 작업 * feature: Mypage status 생성 * feature: wowds로 마이그레이션 * fix: 디자인 시스템 마이그레이션 * feature: wow design system으로 마이그레이션 * fix: 이것저것 반영 * feature: 대시보드 2차 MVP 틀 구현 * fix: 메인화면 네임 수정 * #51: #51: WIP on feature/#51 * feature: helpBox 생성 * fix: 서버 번경 사항 챙기기 * feat: 정회원 버튼 생성 * feat: react-hook-form 기본 세팅 * feat: signup 페이지 완성 * fix: 백엔드 DTO 변경에 따른 반영 * fix: 코드리뷰 반영 * fix: 코드리뷰 반영 - 랜더링 최적화 * fix: 패키지 변경사항 반영 * [Feature] 기본 회원 정보를 받을 수 있는 Signup 페이지를 2차 MVP에 맞게 수정해요. (#60) * chore: 패키지 매니저 pnpm으로 변경 * chore: yaml파일 삭제 * feature: 새롭게 바뀐 DTO 반영 * chore: 컴포넌트 단순화 분리 작업 * feature: Mypage status 생성 * feature: wowds로 마이그레이션 * fix: 디자인 시스템 마이그레이션 * feature: wow design system으로 마이그레이션 * fix: 이것저것 반영 * feature: 대시보드 2차 MVP 틀 구현 * fix: 메인화면 네임 수정 * #51: #51: WIP on feature/#51 * feature: helpBox 생성 * fix: 서버 번경 사항 챙기기 * feat: 정회원 버튼 생성 * feat : wow ui 설치 * feat: react-hook-form 기본 세팅 * fix: 백엔드 api 명세 변경에 따른 프론트 수정 사항 반영 * fix: progressBar wow-ui로 변경 * fix: helpBox 안맞는 부분 수정 * fix: accesstoken 지우기 * feat: signup 페이지 완성 * fix: 코드리뷰 반영 * fix : pnpm install * refactor : query 관련 훅으로 리팩토링, Space 컴포넌트 수정 * fix: getValues 로 수정 * refactor: react-hook-form 의 pattern 사용해서 유효성 검증 * feat : 라우팅 반영 * style : width 100% 수정 * [Feature] 정회원 지원하기 액션시트를 생성하고, API를 연결해요. (#63) * chore: 패키지 매니저 pnpm으로 변경 * chore: yaml파일 삭제 * feature: 새롭게 바뀐 DTO 반영 * chore: 컴포넌트 단순화 분리 작업 * feature: Mypage status 생성 * feature: wowds로 마이그레이션 * fix: 디자인 시스템 마이그레이션 * feature: wow design system으로 마이그레이션 * fix: 이것저것 반영 * feature: 대시보드 2차 MVP 틀 구현 * fix: 메인화면 네임 수정 * #51: #51: WIP on feature/#51 * feature: helpBox 생성 * fix: 서버 번경 사항 챙기기 * feat: 정회원 버튼 생성 * feat: BottomSheet context 생성 * feat : wow ui 설치 * feat: react-hook-form 기본 세팅 * fix: 백엔드 api 명세 변경에 따른 프론트 수정 사항 반영 * fix: progressBar wow-ui로 변경 * fix: helpBox 안맞는 부분 수정 * fix: accesstoken 지우기 * chore: 패키지 업데이트 * feat: BottomSheet 기본 틀 잡기 * feat: 바텀시트 기본 틀 다잡아두기 * feature: API 연결 * fix: pc화면에서 어색해보이지 않도록 가운데 정렬 * fix: 준회원일 경우에만 가입 BottomSheet 보이게끔 * fix: merge 삑난거 수정하기 * fix: 코드리뷰 반영 * fix: 코드리뷰 반영 * fix: 코드리뷰 반영 * fix: bottomSheet overlay fixed로 변경하기 * fix: 코드리뷰 반영 * [Feature] Bevy 가입 인증 절차를 생성해요. (#70) * feat: 기본 Bevy 뷰 생성 * fix: useMutation으로 API 분리 * fix: 사용하지 않는 파일 삭제 * [Feature] 홍익대학교 Gmail을 통해 재학생 인증 기능을 만들어요. (#67) * feat: 인증하기 초기 화면 디자인 변경 * fix : 필요없는 파일 삭제 * fix: API 객체로 변경 * fix: 이메일 인증 화면 변경하기 * feat: 재학생 인증 실패/성공 화면 만들기 * fix: 백엔드 API 반영 전 상태로 되돌리기 * fix: 코드리뷰 작성 * fix: preventReload 적용 * fix: 버튼 삑나간거 고치기 * fix: media query 중단점 수정 * fix: wowds ui 업데이트 * fix: code를 서버에게 보내요. * feat: 회비 납부 플로우 추가 * feat: 토스페이먼츠 결제하기 라우팅 * feat: 토스페이먼츠 클라이언트키 임시등록 * feat: 총 결제금액 표시 * feat: 결제 성공 시 마이페이지로 리다이렉트 * chore: 결제 위젯 연동에 필요한 패키지 설치 * fix: PENDING 상태일 때만 결제창 띄움 * fix: 총 결제 금액 임시 하드코딩 * feat: coupon API 추가 * design: 결제창 레이아웃 변경 * feat: 결제 성공 및 실패 화면, 라우팅 * chore: wowds-ui 설치 * feat: wowds로 마이그레이션 * design: wowds UI 적용 * fix: Box 테두리 색상 임시 변경 * feat: 결제정보 전달 API * feat: 유저정보 API 임시설정 * feat: 쿠폰 타입 변경 * feat: 토스페이먼츠 최신 API 임시 구현 사항 * fix: API post -> get * chore: payments 라이브러리 업데이트 * feat: 토스페이먼츠 위젯 라이브러리 업데이트에 의한 기능구현 변경 * feat: useProduct hook으로 결제 관리 * fix: 결제 실패 시 쿠폰 적용 페이지로 라우팅 * chore: react-secure-storage 설치 * feat: ENV 추가 * feat: 결제 정보 암호화, 로컬스토리지 저장 * fix: 할인금액이 있을 때만 노출 * feat: 결제 실패 시 로컬스토리지 초기화 * fix: 스토리지 리턴타입 단언 * fix: 토스페이먼츠 타입 any 허용 * refactor: 회비 납부 페이지 컴포넌트 분리 * feat: 임시 주문과 결제 승인 API 구분하기 * fix: 토스페이먼츠 테스트를 위한 로직 수정 * feat: 주문완료 API 추가 * design: 회비 납부 UI 수정 * feat: 쿠폰 정보 추가 * refactor: 라우팅 없이 결제 위젯 연결 * fix: 결제 실패 시 라우팅 변경 * fix: 스토리지 관련 로직 삭제 * fix: 스토리지 관련 로직 삭제 * refactor: useProduct 훅, 관련 로직 리렌더링 최소화 리팩토링 * fix: 스토리지 clear 로직 삭제 * fix: 테스트용 API 제거 * chore: 주석 제거 * chore: console.log 삭제 * chore: wowds-ui 버전업 * refactor: 쿠폰 드롭다운 * feat: 무료 주문 생성 API * feat: 주문 생성 API mutation hook으로 변경, 총 가격에 따른 API 조건부 반환 * feat: 주문 완료 API mutation hook으로 변경 * fix : 빌드 에러 수정 , ci 작성 * fix : ci 수정 * fix :svg 속성, 필요없는 컴포넌트 삭제 * fix : 안쓰는 api 삭제 * [Fix]: 디스코드 연동 마이너 이슈 수정 (#75) * fix: 디스코드 합류 체크 관련 API 호출 개선 및 문구 변경 * fix: 메서드 잘못된거 하나 슬쩍 고치기 * fix: API 문서 수정 * [Fix]: Signup 페이지 마이너 UI 이슈 수정 (#74) * fix: signup 마이너 UI 이슈 수정 * fix: 안쓰는 스타일 객체 일단 삭제 * feat: 푸터 텍스트 로고 추가 * feat: 푸터 UI * fix: 기존 홈 온보딩 이미지 삭제 * feat : qa반영 * fix : 불필요한 스타일 삭제, 텍필에 100% 추가 * [Refactor] : 학교 이메일 인증 페이지 QA 개선 반영 (#80) * fix: email 인증 error코드 중복 제거 * refac: 스팸메일함 안내문구 추가 * chore: 채널톡 위젯 삭제 * [Refactor] : Signup 페이지 QA 개선 반영 (#79) * fix: 하단 absolute 처리 * fix: bottom간격 해결 * fix: signup QA * chore: wow-ui 버전 업데이트 * [Feature]: Sentry 세팅 (#81) * chore: sentry 패키지 기본 설치 * feat: Sentry ErrorBoundary 추가 * fix: sentry 관련 기본적인 세팅 완료 * fix: json 문법 수정 * fix: Chatbot 삭제 * fix: 브라우저 설정 환경에 따른 sentry 세팅 * fix: 필요없는 dev 세팅 환경 지우기 * fix: 논리 테스트 (#82) * [Chore]: Sentry 논리 되돌리기 (#83) * fix: 논리 테스트 * fix: sentry 논리판단 되돌리기 * [Chore] : 빌드로그에서 vercel 환경변수 볼 수 있도록 하기 (#84) * fix: 논리 테스트 * fix: sentry 논리판단 되돌리기 * chore: console 테스트 * fix: 로딩 스피너 추가 및 기존 패키지 제거 (#89) * [Refactor]: 마이너 UI 이슈 수정 (#90) * fix: textfield 가로길이 안맞는 부분 수정 * fix: scroll 반 쯤 내려가 있는 문제 해결 * [Refactor] : 결제 페이지에 준회원이 아닌 경우 접근하지 못하도록 해요. (#88) * fix: payment 가드 생성 * fix: 현재 모집기간 닫혀있을때 결제화면 접근 못함 * refac: 토스페이먼츠 접근 화면 가드 꼼꼼하게 다듬기 * fix: data undefined 처리 * fix: payment 성공화면 access화면 생성 * [Refactor]: 학교 이메일 인증 정책을 변경해요 (#91) * fix: email 인증 error코드 중복 제거 * refac: 스팸메일함 안내문구 추가 * chore: 채널톡 위젯 삭제 * fix: 학회원 모집 마감 처리 Box 생성 * fix: 이메일 인증 in_progress 단계 추가 * fix: 이미 사용하고 있는 타입으로 변경 * [Fix] 토스페이먼츠 QA 개선 반영 (#93) * [Fix]: 서버 로그인 로직 변경에 따른 AccessToken, RefeshToken 쿠키 세팅 제거 및 landingStatus 제거 (#87) * fix: 논리 테스트 * fix: sentry 논리판단 되돌리기 * chore: console 테스트 * fix: cookie base-url 상위 도메인으로 변경 * fix: landingStatus 로직 제거 * fix: 메인화면 지원하기 버튼 dashboard로 라우트 * fix:landingStatus 삭제 및 쿠키로직 수정 * fix: landingStatus 관련된 모든 로직 제거 * fix: 쿠키 판단 로직 재건 * fix: 필요없는 guard 모두 삭제 * fix: 리다이렉트 정리 * fix: 로그인 유지 시간 sessionStorage에서 확인 * fix: 쿠키 관련 도메인 로직 모두 삭제 * fix: Cookie 관련 모든 로직 삭제 * fix: 빌드에러 터지는거 해결 * fix: 서버에서 refresh갱신 실패할때 로그아웃 처리 * fix: 403 에러 왔을때 세션 만료 * fix: 모집 기간 마감 예외처리 * fix: 파일 확장명 변경 * [Fix] 토스페이먼츠 결제성공 페이지 가드 임시삭제 (#94) * fix: PaymentsSuccess 가드 임시 삭제 * fix: 전체 금액이 0 미만일 때 0으로 처리 * fix: 사용하지 않는 import 삭제 * fix: 디스코드 관련 qa 반영 * feat : 인증을 완료한 경우에는 대시보드로 라우팅 하는 가드 설정 * [Fix]: 0807 QA 반영 (#95) * fix: navigate 정상화 * fix: 모집 차수 깨져 보이는 현상 개선 * fix: 모집 기간 아닐 때 에러 화면 제거 * fix: signup화면 제출 문구 수정 * refac: 이메일 도메인 직접 입력할 수 있도록 변경 * feat: 로그아웃 로직 붙임 * fix: wowds-ui 버전 업데이트 * fix: username 닉네임 잘못된 부분 수정 * fix: 대기중 문구만 뜨는 것 고치기 * fix: console log 삭제 * fix: 합류 확인 여부 리팩토링 * fix: 로그인 코드 변경 * fix:joinServer 안내문구 * fix:빌드실패 고치기 * fix:서버 status 변경사항 반영 * fix: build 에러 해결 * fix: paymentStatus enum 변경 * [Fix] 토스페이먼츠 쿠폰 관련 QA 사항 반영 (#97) * feat: 총 금액이 0원 이하일 때와 아닐 때의 로직 분리 * fix: 로직 수정 및 에러 토스트 메시지로 변환 * fix: 톤매너 정립 --------- Co-authored-by: Eugene Kim * fix: 상용배포 마이너 UI 이슈 --------- Co-authored-by: 강나연 Co-authored-by: 강나연 <103591752+kongnayeon@users.noreply.github.com> Co-authored-by: SeieunYoo Co-authored-by: SeieunYoo <101736358+SeieunYoo@users.noreply.github.com> Co-authored-by: hamo-o Co-authored-by: 이현영 <89445100+hamo-o@users.noreply.github.com> --- src/pages/PaymentsSuccess.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pages/PaymentsSuccess.tsx b/src/pages/PaymentsSuccess.tsx index 403482a..773953f 100644 --- a/src/pages/PaymentsSuccess.tsx +++ b/src/pages/PaymentsSuccess.tsx @@ -2,6 +2,7 @@ import { useEffect } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { Flex, Text, Space } from '@/components/common/Wrapper'; import { media } from '@/styles'; +import { useQueryClient } from '@tanstack/react-query'; import styled from '@emotion/styled'; import Button from 'wowds-ui/Button'; @@ -13,6 +14,7 @@ import usePostOrder from '@/hooks/mutation/usePostOrder'; export function PaymentsSuccess() { const navigate = useNavigate(); + const queryClient = useQueryClient(); const [searchParams] = useSearchParams(); const { postOrder } = usePostOrder(); @@ -58,7 +60,13 @@ export function PaymentsSuccess() { - + From 140dbf4694252bd8627b54d0de5cf15f62dfc899 Mon Sep 17 00:00:00 2001 From: Eugene Kim <67894159+eugene028@users.noreply.github.com> Date: Fri, 23 Aug 2024 03:11:24 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[Feature]:=20=EC=97=90=EB=9F=AC=ED=95=B8?= =?UTF-8?q?=EB=93=A4=EB=9F=AC=20=EB=8F=99=EC=9E=91=EB=B0=A9=EC=8B=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95,=20sentry=20=EC=97=90=EB=9F=AC=EC=9E=A1?= =?UTF-8?q?=EA=B8=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20(#102)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: custom error 핸들러 추가 * feat: sentry 에러 잡는 Async component 생성 * feat: 404 페이지 생성 * feat: 404 페이지 404 잡히게끔 설정 * fix: Text 잘못 import 한것 제거 * feat: apiErrorboundary 수정 --- package.json | 5 +- pnpm-lock.yaml | 12 ++++ public/notfound.png | Bin 0 -> 125612 bytes src/components/ApiErrorBoundary.tsx | 29 ++++++++-- src/components/common/AsyncBoundary.tsx | 15 +++++ src/pages/NotFound.tsx | 73 ++++++++++++++++++++++++ src/pages/index.ts | 1 + src/routes/index.tsx | 8 ++- src/utils/sentry.ts | 1 - 9 files changed, 134 insertions(+), 10 deletions(-) create mode 100644 public/notfound.png create mode 100644 src/components/common/AsyncBoundary.tsx create mode 100644 src/pages/NotFound.tsx diff --git a/package.json b/package.json index c5f4747..f1e27cb 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,14 @@ "nanoid": "^5.0.7", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-error-boundary": "^4.0.13", "react-hook-form": "^7.50.1", "react-router-dom": "^6.22.1", "react-toastify": "^10.0.4", "wowds-icons": "^0.1.0", "wowds-tokens": "^0.0.9", - "zustand": "^4.5.0", - "wowds-ui": "^0.1.9" + "wowds-ui": "^0.1.9", + "zustand": "^4.5.0" }, "devDependencies": { "@sentry/react": "^8.22.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc189e9..5c34b68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ dependencies: react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) + react-error-boundary: + specifier: ^4.0.13 + version: 4.0.13(react@18.2.0) react-hook-form: specifier: ^7.50.1 version: 7.50.1(react@18.2.0) @@ -8808,6 +8811,15 @@ packages: react-is: 18.1.0 dev: true + /react-error-boundary@4.0.13(react@18.2.0): + resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} + peerDependencies: + react: '>=16.13.1' + dependencies: + '@babel/runtime': 7.23.9 + react: 18.2.0 + dev: false + /react-hook-form@7.50.1(react@18.2.0): resolution: {integrity: sha512-3PCY82oE0WgeOgUtIr3nYNNtNvqtJ7BZjsbxh6TnYNbXButaD5WpjOmTjdxZfheuHKR68qfeFnEDVYoSSFPMTQ==} engines: {node: '>=12.22.0'} diff --git a/public/notfound.png b/public/notfound.png new file mode 100644 index 0000000000000000000000000000000000000000..3385fa5ee5c3d552201373df594ef7fa9a2f6e83 GIT binary patch literal 125612 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 Sx0V0*Oe%^R3Z-%upZ-7O1gw$( literal 0 HcmV?d00001 diff --git a/src/components/ApiErrorBoundary.tsx b/src/components/ApiErrorBoundary.tsx index d0efcd9..035915c 100644 --- a/src/components/ApiErrorBoundary.tsx +++ b/src/components/ApiErrorBoundary.tsx @@ -1,17 +1,26 @@ -import { PropsWithChildren } from 'react'; - +import { PropsWithChildren, PropsWithRef } from 'react'; +import * as Sentry from '@sentry/react'; +import { ErrorBoundary } from 'react-error-boundary'; import { useQueryClient } from '@tanstack/react-query'; import { AxiosError } from 'axios'; import { redirect } from 'react-router-dom'; import { toast } from 'react-toastify'; import RoutePath from '@/routes/routePath'; +import NotFoundPage from '@/pages/NotFound'; type ErrorResponseType = { errorCodeName: string; errorMessage: string; }; -export default function ApiErrorBoundary({ children }: PropsWithChildren) { +export type ApiErrorBoundaryProps = PropsWithRef< + PropsWithChildren +>; + +export default function ApiErrorBoundary({ + children, + ...rest +}: ApiErrorBoundaryProps) { const queryClient = useQueryClient(); queryClient.getQueryCache().config = { @@ -38,7 +47,19 @@ export default function ApiErrorBoundary({ children }: PropsWithChildren) { toast.error(message); break; } + + if (errorResponse) { + // eslint-disable-next-line import/namespace + Sentry.captureException(errorResponse, {}); + } } - return <>{children}; + return ( + handleError(error as AxiosError)} + fallbackRender={() => }> + {children} + + ); } diff --git a/src/components/common/AsyncBoundary.tsx b/src/components/common/AsyncBoundary.tsx new file mode 100644 index 0000000..7b0793a --- /dev/null +++ b/src/components/common/AsyncBoundary.tsx @@ -0,0 +1,15 @@ +import { ErrorBoundary } from '@sentry/react'; +import { Suspense, SuspenseProps } from 'react'; +import LoadingSpinner from './LoadingSpinner'; + +type AsyncBoundaryProps = Omit; + +const AsyncBoundary = ({ children, ...rest }: AsyncBoundaryProps) => { + return ( + + }>{children} + + ); +}; + +export default AsyncBoundary; diff --git a/src/pages/NotFound.tsx b/src/pages/NotFound.tsx new file mode 100644 index 0000000..c6c3619 --- /dev/null +++ b/src/pages/NotFound.tsx @@ -0,0 +1,73 @@ +import { Flex, Space, Text } from '@/components/common/Wrapper'; +import * as Sentry from '@sentry/react'; +import GlobalSize from '@/constants/globalSize'; +import { media } from '@/styles'; +import styled from '@emotion/styled'; +import { useNavigate } from 'react-router-dom'; +import { color } from 'wowds-tokens'; +import Button from 'wowds-ui/Button'; + +const NotFoundPage = () => { + const navigate = useNavigate(); + if (process.env.NODE_ENV === 'production') { + // eslint-disable-next-line import/namespace + Sentry.captureMessage('404 Page Not Found', { + extra: { + pathname: location.pathname + } + }); + } + return ( + + + + + 오류가 발생했어요. + 요청하신 페이지를 찾을 수 없어요. + + + + + + ); +}; + +export default NotFoundPage; + +const Img = styled.img` + object-fit: cover; +`; + +const NotfoundWrapper = styled.div` + display: flex; + position: relative; + flex-direction: column; + justify-content: start; + align-items: center; + min-height: calc(100vh - ${GlobalSize.header}); + width: ${GlobalSize.width}; + margin: 0px -16px; + padding: 0px 16px; + padding-top: 40px; + padding-bottom: 28px; + background-color: ${color.backgroundAlternative}; + ${media.mobile} { + width: 100vw; + } +`; + +const ButtonContainer = styled.div` + position: absolute; + bottom: 1.75rem; + padding: 1rem 0.75rem; + width: 100%; + display: flex; + flex-direction: column; + align-items: center; +`; diff --git a/src/pages/index.ts b/src/pages/index.ts index bc2a706..2465935 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -11,3 +11,4 @@ export * from './redirect/StudentVerificationServerRedirect'; export * from './PaymentsCheckout'; export * from './PaymentsFail'; export * from './PaymentsSuccess'; +export * from './NotFound'; diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 60fff45..dccc10c 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -4,7 +4,7 @@ import RoutePath from '@/routes/routePath'; import { RouterProvider, createBrowserRouter } from 'react-router-dom'; import Layout from '@/components/layout/Layout'; import AuthAccessGuard from '@/components/auth/guard/AuthAccessGuard'; -import { Text } from '@/components/common/Wrapper'; +import NotFoundPage from '@/pages/NotFound'; import { AuthServerRedirectNavigate, StudentVerificationServerRedirect, @@ -148,8 +148,10 @@ const router = sentryCreateBrowserRouter([ path: RoutePath.PaymentsSuccess, element: }, - // Todo: 404 Not found page - { path: '*', element: not found page } + { + path: '*', + element: + } ] } ]); diff --git a/src/utils/sentry.ts b/src/utils/sentry.ts index 8eea869..c71bf51 100644 --- a/src/utils/sentry.ts +++ b/src/utils/sentry.ts @@ -12,7 +12,6 @@ const setSentry = () => { function initSentry() { if (process.env.NODE_ENV === 'development') return; - console.log(`VERCEL ENV : ${process.env.VERCEL_ENV}`); Sentry.init({ environment: process.env.VERCEL_ENV, dsn: SENTRY_DSN_KEY, From 3116d07a6b2d132b2dad245f771e370be03e9203 Mon Sep 17 00:00:00 2001 From: Eugene Kim <67894159+eugene028@users.noreply.github.com> Date: Fri, 23 Aug 2024 03:20:11 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[Feature]:=20react=20query=EB=A5=BC=20?= =?UTF-8?q?=EC=9D=B4=EC=9A=A9=ED=95=9C=20=EC=97=90=EB=9F=AC=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#103)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: custom error 핸들러 추가 * feat: sentry 에러 잡는 Async component 생성 * feat: 404 페이지 생성 * feat: 404 페이지 404 잡히게끔 설정 * fix: Text 잘못 import 한것 제거 * feat: apiErrorboundary 수정 * fix: error동작방식 수정 * chore: 에러처리 순서 변경 --- src/components/ApiErrorBoundary.tsx | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/components/ApiErrorBoundary.tsx b/src/components/ApiErrorBoundary.tsx index 035915c..57598d4 100644 --- a/src/components/ApiErrorBoundary.tsx +++ b/src/components/ApiErrorBoundary.tsx @@ -1,26 +1,21 @@ -import { PropsWithChildren, PropsWithRef } from 'react'; import * as Sentry from '@sentry/react'; -import { ErrorBoundary } from 'react-error-boundary'; import { useQueryClient } from '@tanstack/react-query'; import { AxiosError } from 'axios'; import { redirect } from 'react-router-dom'; import { toast } from 'react-toastify'; import RoutePath from '@/routes/routePath'; -import NotFoundPage from '@/pages/NotFound'; +import { ReactNode } from 'react'; type ErrorResponseType = { errorCodeName: string; errorMessage: string; }; -export type ApiErrorBoundaryProps = PropsWithRef< - PropsWithChildren ->; - export default function ApiErrorBoundary({ - children, - ...rest -}: ApiErrorBoundaryProps) { + children +}: { + children: ReactNode; +}) { const queryClient = useQueryClient(); queryClient.getQueryCache().config = { @@ -33,7 +28,10 @@ export default function ApiErrorBoundary({ function handleError(axiosError: AxiosError) { const errorResponse = axiosError.response?.data as ErrorResponseType; - + if (errorResponse) { + // eslint-disable-next-line import/namespace + Sentry.captureException(errorResponse, {}); + } const message = errorResponse.errorMessage; switch (axiosError.response?.status) {