Skip to content

Commit

Permalink
[Deploy]: 이용약관, 랜딩페이지 모집문구 변경 (#104)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>

* fix: 상용배포 마이너 UI 이슈

* [Feature]: 에러핸들러 동작방식 수정, sentry 에러잡기 테스트 (#102)

* feat: custom error 핸들러 추가

* feat: sentry 에러 잡는 Async component 생성

* feat: 404 페이지 생성

* feat: 404 페이지 404 잡히게끔 설정

* fix: Text 잘못 import 한것 제거

* feat: apiErrorboundary 수정

* [Feature]: react query를 이용한 에러 처리방식으로 수정 (#103)

* feat: custom error 핸들러 추가

* feat: sentry 에러 잡는 Async component 생성

* feat: 404 페이지 생성

* feat: 404 페이지 404 잡히게끔 설정

* fix: Text 잘못 import 한것 제거

* feat: apiErrorboundary 수정

* fix: error동작방식 수정

* chore: 에러처리 순서 변경

* fix: 빌드에러 처리

* [Feature]: 2024-2 가입 랜딩페이지 수정 (#101)

* fix: 지원기간 하드코딩 변경

* fix: 온보딩 문구 수정

* fix: footer 이용약관 추가

---------

Co-authored-by: 강나연 <[email protected]>
Co-authored-by: 강나연 <[email protected]>
Co-authored-by: SeieunYoo <[email protected]>
Co-authored-by: SeieunYoo <[email protected]>
Co-authored-by: hamo-o <[email protected]>
Co-authored-by: 이현영 <[email protected]>
  • Loading branch information
7 people authored Aug 23, 2024
1 parent 5e49715 commit 008dc66
Show file tree
Hide file tree
Showing 12 changed files with 185 additions and 33 deletions.
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
12 changes: 12 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added public/notfound.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
51 changes: 28 additions & 23 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,14 @@ function App() {
word-break: keep-all;
`}>
GDSC는 Google Developers에서 제공하는 프로그램을 통해 운영되는 대학교
기반의 개발자 커뮤니티 그룹입니다. <br />
기반의 개발자 커뮤니티 그룹이에요.
<br />
개발자로서 성장하는 데 관심이 있는 학부생이라면 누구나 참여할 수
있습니다. <br />
있어요.
<br />
GDSC의 목표는 전 세계의 대학생 개발자들이 구글 관련 기술 혹은
프로그래밍 실력을 높이고 지역 사회와 협력하여 실제 문제를 해결하도록
성장하는 것입니다.
성장하는 것이에요.
</Text>
</Introduction>
<Space height={80} />
Expand All @@ -97,10 +99,12 @@ function App() {
word-break: keep-all;
`}>
GDSC Hongik Open Community는 학생 개발자를 위한 홍익대학교의 개발
커뮤니티입니다.
<br /> 초심자들이 개발에 관심을 가지고 입문할 수 있도록 기초 학술
프로그램을 운영하며, 다양한 이벤트와 컨텐츠를 통해 학회원들과 소통할 수
있는 네트워킹 플랫폼을 제공하고 있습니다.
커뮤니티예요.
<br />
“더 나은 환경을, 더 나은 학우에게” 제공하는 것을 목표로, 초심자들이
개발에 관심을 가지고 입문할 수 있도록 기초 학술 프로그램을 운영하며,
다양한 이벤트와 컨텐츠를 통해 학회원들과 소통할 수 있는 네트워킹
플랫폼을 제공하고 있어요.
</Text>
<Space height={80} />
<Text typo="h1" color="black">
Expand All @@ -114,9 +118,8 @@ function App() {
text-align: center;
word-break: keep-all;
`}>
GDSC의 목표는 전 세계의 대학생 개발자들이 구글 관련 기술 혹은 프로그래밍
실력을 높이고 지역 사회와 협력하여 실제 문제를 해결하도록 성장하는
것입니다.
이번 학기 GDSC Hongik은 변화와 발전에 초점을 두어, 현재에 안주하지 않고
변화를 통해 구성원이 함께 발전시켜나갈 수 있는 커뮤니티를 운영하려 해요.
</Text>
<Space height={24} />
<Flex direction="column" gap="md">
Expand All @@ -132,17 +135,14 @@ function App() {
text-align: center;
word-break: keep-all;
`}>
GDSC의 이러한 비전에 맞추어, GDSC Hongik은 초심자들이 개발에 관심을
가지고 입문할 수 있도록 기초 학술 프로그램을 운영하며, 다양한 이벤트와
콘텐츠를 통해 학회원들과 소통할 수 있는 네트워킹 플랫폼을 제공하고
있습니다.
초심자들을 위한 기초 학술 프로그램부터, 다양한 이벤트와 컨텐츠를 통해
학회원들과 소통할 수 있는 네트워킹 플랫폼을 제공할 예정이에요.
</Text>
<Space height={48} />
<Flex direction="column" gap="sm">
<InformationBox
title="모집 기간"
description="1차 지원 기간: 2월 27일 ~ 3월 1일"
description2="2차 지원 기간: 3월 4일 ~ 3월 8일"
description="8월 26일(월) ~ 8월 30일(금)"
/>
<InformationBox
title="지원 자격"
Expand All @@ -152,7 +152,6 @@ function App() {
<InformationBox
title="지원 시 유의사항"
description="GDSC 커뮤니티 가이드라인 및 오픈 커뮤니티 가이드라인을 준수해야 해요."
description2="또한, 학기 당 2만원의 회비가 있어요."
/>
</Flex>
<Space height={48} />
Expand All @@ -178,17 +177,23 @@ function App() {
<Flex direction="column" gap="sm">
<InformationBox
title="Q. 서류, 면접 전형이 있나요?"
description="A. 없습니다! 홍익대학교 학생이라면 누구나 본 사이트의 '가입하기' 를 통해 지원할 수 있어요."
description="A. 아니요. 본 서비스를 통해 가입하면 홍익대학교 학생 누구나 바로 커뮤니티에서 활동할 수 있어요."
/>
<InformationBox
title="Q. 저는 코딩을 하나도 모르는 새내기인데, 따라갈 수 있나요?"
description="A. 당연하죠!"
description2="기초 스터디는 개발에 처음 입문하는 사람들을 위해서 만들어진 커리큘럼으로 강의가 진행돼요. 학습자 분들이 차근차근 따라올 수 있게끔 주차별 미션과 담당 멘토를 통해 도와드릴 예정이니, 부담갖지 않으셔도 돼요!
스터디에 참여하지 못하더라도, 사람들과 네트워킹하며 친분을 쌓아가는 것도 언제든지 환영입니다!"
/>
<InformationBox
title="Q. 다른 동아리, 학회와 병행 가능한가요?"
description="A. 가능합니다!"
description2="GDSC Hongik은 멤버 분들이 각자의 일정과 시간에 맞춰서 편하게 활동하실있게, 모든 활동에 자율적으로 참여할 수 있는 환경을 제공하고 있어요."
description="A. 가능해요!"
description2="GDSC Hongik은 Open Community 체제로 운영되기에 모든 활동에 자율적으로 참여하실있어요. 어딘가에 너무 오랫동안, 깊게 소속되지 않고, 가볍게 개발을 배우며 다른 사람들과 교류하고 싶은 분들에게 좋은 곳이에요."
/>
<InformationBox
title="Q. 저는 코딩을 하나도 모르는 새내기인데, 따라갈 수 있나요?"
description="A. 당연하죠!"
description2="저희는 커뮤니티 멤버 개개인이 저마다 다른 목표와 속도를 가지고 있다는 점을 깊이 이해하고 있어요. 새내기와 입문자 분들이 개발자로서 함께 성장할 수 있도록 기초 커리큘럼과 다양한 학술 지원 프로그램을 운영하고 있으니, 너무 걱정하지 않으셔도 돼요."
title="Q. GDSC Hongik에 대해 궁금한 것이 있어요!"
description="A. 이번 학기부터는 채널톡이 아닌, GDSC Hongik 카카오톡 채널을 통해 문의할 수 있어요!"
description2="카카오톡 채널을 추가하면 더욱 간편하게 이용할 수 있고, 추후 안내 사항을 빠르게 전달 받을 수 있어요."
/>
</Flex>
<Space height={59} />
Expand Down
20 changes: 16 additions & 4 deletions src/components/ApiErrorBoundary.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
import { PropsWithChildren } from 'react';

import * as Sentry from '@sentry/react';
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 { ReactNode } from 'react';

type ErrorResponseType = {
errorCodeName: string;
errorMessage: string;
};

export default function ApiErrorBoundary({ children }: PropsWithChildren) {
export default function ApiErrorBoundary({
children
}: {
children: ReactNode;
}) {
const queryClient = useQueryClient();

queryClient.getQueryCache().config = {
Expand All @@ -24,7 +28,10 @@ export default function ApiErrorBoundary({ children }: PropsWithChildren) {

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) {
Expand All @@ -38,6 +45,11 @@ export default function ApiErrorBoundary({ children }: PropsWithChildren) {
toast.error(message);
break;
}

if (errorResponse) {
// eslint-disable-next-line import/namespace
Sentry.captureException(errorResponse, {});
}
}

return <>{children}</>;
Expand Down
15 changes: 15 additions & 0 deletions src/components/common/AsyncBoundary.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { ErrorBoundary } from '@sentry/react';
import { Suspense, SuspenseProps } from 'react';
import LoadingSpinner from './LoadingSpinner';

type AsyncBoundaryProps = Omit<SuspenseProps, 'fallback'>;

const AsyncBoundary = ({ children, ...rest }: AsyncBoundaryProps) => {
return (
<ErrorBoundary {...rest}>
<Suspense fallback={<LoadingSpinner />}>{children}</Suspense>
</ErrorBoundary>
);
};

export default AsyncBoundary;
5 changes: 5 additions & 0 deletions src/components/layout/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ const Footer = () => {
GDSC Hongik 가이드라인{' '}
</Text>
</Link>
<Link to={'https://www.gdschongik.com/term-of-use'}>
<Text typo="label2" style={{ textDecoration: 'underline' }}>
와우온보딩 이용약관
</Text>
</Link>
</Flex>

<Flex direction="column" align="start">
Expand Down
73 changes: 73 additions & 0 deletions src/pages/NotFound.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<NotfoundWrapper>
<Space height={100} />
<Flex gap="sm" direction="column">
<Img src={'/notfound.png'} width={300} height={50} />
<Text typo="h1">오류가 발생했어요.</Text>
<Text typo="body1">요청하신 페이지를 찾을 수 없어요.</Text>
</Flex>
<ButtonContainer>
<Button
style={{ maxWidth: '100%' }}
onClick={() => {
navigate('/');
}}>
메인 화면으로 돌아가기
</Button>
</ButtonContainer>
</NotfoundWrapper>
);
};

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;
`;
1 change: 1 addition & 0 deletions src/pages/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ export * from './redirect/StudentVerificationServerRedirect';
export * from './PaymentsCheckout';
export * from './PaymentsFail';
export * from './PaymentsSuccess';
export * from './NotFound';
8 changes: 5 additions & 3 deletions src/routes/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -148,8 +148,10 @@ const router = sentryCreateBrowserRouter([
path: RoutePath.PaymentsSuccess,
element: <PaymentsSuccess />
},
// Todo: 404 Not found page
{ path: '*', element: <Text>not found page</Text> }
{
path: '*',
element: <NotFoundPage />
}
]
}
]);
1 change: 0 additions & 1 deletion src/utils/sentry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
27 changes: 27 additions & 0 deletions vite.config.ts.timestamp-1724312798440-8bfe4df2623d3.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// vite.config.ts
import { defineConfig } from "file:///Users/eugene/github/gdsc-client/node_modules/.pnpm/[email protected][email protected]/node_modules/vite/dist/node/index.js";
import react from "file:///Users/eugene/github/gdsc-client/node_modules/.pnpm/@[email protected][email protected]/node_modules/@vitejs/plugin-react-swc/index.mjs";
import tsconfigPaths from "file:///Users/eugene/github/gdsc-client/node_modules/.pnpm/[email protected][email protected][email protected]/node_modules/vite-tsconfig-paths/dist/index.mjs";
import { sentryVitePlugin } from "file:///Users/eugene/github/gdsc-client/node_modules/.pnpm/@[email protected]/node_modules/@sentry/vite-plugin/dist/esm/index.mjs";
var vite_config_default = defineConfig({
plugins: [
react(),
tsconfigPaths(),
sentryVitePlugin({
org: process.env.SENTRY_ORG_NAME,
project: process.env.SENTRY_PROJECT_NAME,
authToken: process.env.SENTRY_AUTH_TOKEN,
sourcemaps: {
assets: "./dist/**",
filesToDeleteAfterUpload: "**/*.map"
}
})
],
build: {
sourcemap: true
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvZXVnZW5lL2dpdGh1Yi9nZHNjLWNsaWVudFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL2V1Z2VuZS9naXRodWIvZ2RzYy1jbGllbnQvdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL2V1Z2VuZS9naXRodWIvZ2RzYy1jbGllbnQvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlJztcbmltcG9ydCByZWFjdCBmcm9tICdAdml0ZWpzL3BsdWdpbi1yZWFjdC1zd2MnO1xuaW1wb3J0IHRzY29uZmlnUGF0aHMgZnJvbSAndml0ZS10c2NvbmZpZy1wYXRocyc7XG5cbmltcG9ydCB7IHNlbnRyeVZpdGVQbHVnaW4gfSBmcm9tICdAc2VudHJ5L3ZpdGUtcGx1Z2luJztcblxuLy8gaHR0cHM6Ly92aXRlanMuZGV2L2NvbmZpZy9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XG4gIHBsdWdpbnM6IFtcbiAgICByZWFjdCgpLFxuICAgIHRzY29uZmlnUGF0aHMoKSxcbiAgICBzZW50cnlWaXRlUGx1Z2luKHtcbiAgICAgIG9yZzogcHJvY2Vzcy5lbnYuU0VOVFJZX09SR19OQU1FLFxuICAgICAgcHJvamVjdDogcHJvY2Vzcy5lbnYuU0VOVFJZX1BST0pFQ1RfTkFNRSxcbiAgICAgIGF1dGhUb2tlbjogcHJvY2Vzcy5lbnYuU0VOVFJZX0FVVEhfVE9LRU4sXG4gICAgICBzb3VyY2VtYXBzOiB7XG4gICAgICAgIGFzc2V0czogJy4vZGlzdC8qKicsXG4gICAgICAgIGZpbGVzVG9EZWxldGVBZnRlclVwbG9hZDogJyoqLyoubWFwJ1xuICAgICAgfVxuICAgIH0pXG4gIF0sXG4gIGJ1aWxkOiB7XG4gICAgc291cmNlbWFwOiB0cnVlXG4gIH1cbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFrUixTQUFTLG9CQUFvQjtBQUMvUyxPQUFPLFdBQVc7QUFDbEIsT0FBTyxtQkFBbUI7QUFFMUIsU0FBUyx3QkFBd0I7QUFHakMsSUFBTyxzQkFBUSxhQUFhO0FBQUEsRUFDMUIsU0FBUztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sY0FBYztBQUFBLElBQ2QsaUJBQWlCO0FBQUEsTUFDZixLQUFLLFFBQVEsSUFBSTtBQUFBLE1BQ2pCLFNBQVMsUUFBUSxJQUFJO0FBQUEsTUFDckIsV0FBVyxRQUFRLElBQUk7QUFBQSxNQUN2QixZQUFZO0FBQUEsUUFDVixRQUFRO0FBQUEsUUFDUiwwQkFBMEI7QUFBQSxNQUM1QjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFdBQVc7QUFBQSxFQUNiO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K

0 comments on commit 008dc66

Please sign in to comment.