Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev-fe -> dev merge #291

Merged
merged 241 commits into from
Nov 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
241 commits
Select commit Hold shift + click to select a range
fc0e7fb
dev-fe update (#129)
swkim12345 Nov 6, 2024
77c24b6
🚚 chore: prettier-plugin-tailwindcss 설치
baegyeong Nov 6, 2024
b42e6ff
✨ feat: typography 변수 설정
baegyeong Nov 6, 2024
a21ca29
✨ feat: light mode의 color system 추가
baegyeong Nov 6, 2024
fec1d0a
Feat/#133 - 디자인 시스템 설정 (#135)
xjfcnfw3 Nov 7, 2024
098caa5
✨ feat: 네비게이션 바에 필요한 이미지, SVG 추가
xjfcnfw3 Nov 10, 2024
ab4c749
✨ feat: 네비게이션 바 버튼 컴포넌트 구현
xjfcnfw3 Nov 10, 2024
d3b84b1
✨ feat: 네비게이션 바 컴포넌트 구현
xjfcnfw3 Nov 10, 2024
0120383
🚚 chore: svg를 컴포넌트처럼 불러올 수 있게 세팅
baegyeong Nov 10, 2024
19ebfed
✨ feat: button 컴포넌트 구현
baegyeong Nov 10, 2024
70cd969
✨ feat: 채팅 구역 컴포넌트와 text area 컴포넌트 구현
baegyeong Nov 10, 2024
652d14a
✨ feat: white color config에 추가
baegyeong Nov 10, 2024
c33dd16
✨ feat: 알림, 알림추가에 대한 기본적인 UI 구현
baegyeong Nov 10, 2024
cc4b597
✨ feat: 주식 상세 페이지 정보에 대한 UI 구현
baegyeong Nov 10, 2024
c1efb86
✨ feat: svg 크기, 클래스 이름을 설정할 수 있도록 변경
xjfcnfw3 Nov 10, 2024
c0a29f4
✨ feat: utility class를 @layer로 감싸서 우선순위 부여
baegyeong Nov 11, 2024
1ec07f6
🐛 fix: 반복되는 컴포넌트 추출, mock data 추가
baegyeong Nov 11, 2024
e8ead16
✨ feat: 주가정보 메뉴 constants로 정의
baegyeong Nov 11, 2024
386c58f
🐛 fix: 시맨틱 태그 사용 및 반복되는 클래스 줄이기
baegyeong Nov 11, 2024
bb5c778
🐛 fix: 알림과 알림추가 비율 변경
baegyeong Nov 11, 2024
be27b67
🐛 fix: 주식 상세 페이지 그리드 비율 변경
baegyeong Nov 11, 2024
d021ecf
Feat/#136 - 주식 상세 페이지 기본 UI를 구현한다. (#147)
baegyeong Nov 12, 2024
5df7a4c
Merge branch 'feature/nav' of https://github.com/boostcampwm-2024/web…
baegyeong Nov 12, 2024
13ef77d
🐛 fix: tailwind config 겹치는 white 속성 제거
baegyeong Nov 12, 2024
41c2434
🚚 chore: tsx가 아닌 svg 파일 재업로드
baegyeong Nov 12, 2024
2e92541
🐛 fix: 폴더 이동 및 svg import 변경
baegyeong Nov 12, 2024
921eefb
🚚 chore: 로고 캐릭터 사진명 변경
baegyeong Nov 12, 2024
bcda754
🚚 chore: 타이포 로고를 배경 없는 이미지로 변경
baegyeong Nov 12, 2024
7fffeb5
🐛 fix: svg fill, stroke 값을 current로 변경
baegyeong Nov 12, 2024
fdf03b4
✨ feat: 사이드바 UI 구현
baegyeong Nov 12, 2024
ff1bc4a
🚚 chore: 카멜케이스로 파일명 변경
baegyeong Nov 12, 2024
6da01cb
🚚 chore: react-router 설치
baegyeong Nov 12, 2024
990f152
✨ feat: sidebar를 포함한 전체 레이아웃 컴포넌트 구현
baegyeong Nov 12, 2024
2dd3da2
✨ feat: 홈, 마이페이지, 주식 상세 라우터 연결
baegyeong Nov 12, 2024
67ce08f
Feature/#153 - 사이드바 UI 구현 (#155)
xjfcnfw3 Nov 12, 2024
b1d3a97
🚚 chore: lightweight-charts 라이브러리 설치
baegyeong Nov 12, 2024
1dbf06c
✨ feat: 그래프 라이트,다크 모드에 따른 테마 타입 정의
baegyeong Nov 12, 2024
cb8cefc
✨ feat: 차트 생성, 리사이즈 하는 커스텀 훅 구현
baegyeong Nov 12, 2024
8f3af35
✨ feat: mock data 추가
baegyeong Nov 12, 2024
b21ebd4
✨ feat: 상세 주식 페이지에 그래프 배치
baegyeong Nov 12, 2024
15131ba
🐛 fix: 그래프 캔들 스틱 색상 변경
baegyeong Nov 13, 2024
f2f23c1
🐛 fix: 캔들 차트와 히스토그램을 극명하게 분리
baegyeong Nov 13, 2024
61d908d
🐛 fix: red, blue 연하게 변경 및 colorConfig로 할당
baegyeong Nov 13, 2024
8500a2f
✨ feat: 히스토그램에서 이전 값과 비교하여 색상 설정
baegyeong Nov 13, 2024
87c4a94
🐛 fix: volume color 설정 삭제
baegyeong Nov 13, 2024
46e6a5c
🐛 fix: scaleMargins 범위 변경
baegyeong Nov 13, 2024
bbb2f8f
Feat/#127 - 차트 UI 구현 (#151)
baegyeong Nov 13, 2024
4101fe4
✨ feat: tooltip 컴포넌트 구현
baegyeong Nov 13, 2024
9d3536b
✨ feat: metric 관련 정보 객체를 새로 정의
baegyeong Nov 13, 2024
b4a1523
✨ feat: metric 정보에 hover 됐을 때 message 출력되도록 구조 변경
baegyeong Nov 13, 2024
948fee3
Feature/#160 - tooltip 컴포넌트 구현 (#161)
baegyeong Nov 14, 2024
609494d
🚚 chore: 스토리북 설치
baegyeong Nov 14, 2024
27f3611
🚚 chore: button, tooltip 컴포넌트 폴더 생성
baegyeong Nov 14, 2024
950adcc
✨ feat: button, tooltip 스토리북 코드 작성
baegyeong Nov 14, 2024
bb213a0
📦️ ci: storybook 배포 코드 작성
baegyeong Nov 14, 2024
ef72fd0
🚚 chore: favicon 아이콘 추가
baegyeong Nov 14, 2024
7a4fb9a
Feature/#165 - favicon 아이콘 추가 (#166)
xjfcnfw3 Nov 14, 2024
d19b4e7
Feature/#162 - 스토리북 설정 (#164)
baegyeong Nov 14, 2024
eaac39f
📦️ ci: yarn 명령어 변경
baegyeong Nov 14, 2024
1301ded
📦️ ci: build 명령어 변경
baegyeong Nov 14, 2024
1c4854d
🐛 fix: tailwind config 파일을 불러오지 못하는 문제 해결
baegyeong Nov 14, 2024
577a8b2
🐛 fix: 기본 레이아웃 css 변경
baegyeong Nov 14, 2024
9bbec33
✨ feat: trading chart 기본 테마 변경
baegyeong Nov 14, 2024
9495552
📦️ ci: build 테스트 위해 pr 시 돌아가도록 설정
baegyeong Nov 14, 2024
a5a0430
📦️ ci: build 폴더명 수정 -\> dist
baegyeong Nov 14, 2024
43f1461
📦️ ci: frontend deploy workflow 추가
baegyeong Nov 14, 2024
8363414
📦️ ci: workflow의 build dir 수정
baegyeong Nov 14, 2024
c24982c
📦️ ci: github pages 메인에 storybook을 배포하도록 수정
baegyeong Nov 14, 2024
2b98d57
📦️ ci: pr 날릴 때 workflow 돌아가는 코드 삭제
baegyeong Nov 14, 2024
74f4f92
Bug/#168 - 스토리북 빌드되지 않는 문제 수정 (#169)
baegyeong Nov 14, 2024
2339e5f
📦️ ci: dockerfile 추가
baegyeong Nov 14, 2024
b3ff70d
📦️ ci: docker image 경로 수정
baegyeong Nov 14, 2024
6584e35
✨ feat: 주식 지수 정보를 나타내는 컴포넌트 구현
baegyeong Nov 18, 2024
4fc0a89
✨ feat: 주식 정보를 나타내는 카드 컴포넌트 구현
baegyeong Nov 18, 2024
523f725
✨ feat: 주식 순위를 보여주기 위한 테이블 구현
baegyeong Nov 18, 2024
ccd6e2b
✨ feat: 주식 메인페이지 UI 구현
baegyeong Nov 18, 2024
ae16412
🐛 fix: layout padding 수정
baegyeong Nov 18, 2024
4f60f9b
✨ feat: 주식 메인페이지 라우터 추가
baegyeong Nov 18, 2024
ea31cb8
🐛 fix: return 키워드 삭제
baegyeong Nov 18, 2024
b5d2543
Feature/#181 - 주식 메인페이지 UI 구현 (#187)
baegyeong Nov 18, 2024
4446e25
🐛 fix: button type 추가, hover 시 스타일 추가
baegyeong Nov 19, 2024
df3e851
🐛 fix: type import 추가
baegyeong Nov 19, 2024
5fbf6ed
✨ feat: input 컴포넌트 구현
baegyeong Nov 19, 2024
ef363c7
🐛 fix: 사이드바 MenuList 클릭 이벤트 추가
baegyeong Nov 19, 2024
1a5b105
✨ feat: 검색 컴포넌트 구현
baegyeong Nov 19, 2024
9c22b07
✨ feat: 컴포넌트 바깥 클릭했을 때 callback 실행하는 커스텀훅 구현
baegyeong Nov 19, 2024
de414ae
🚚 chore: 로그인 버튼 이미지 추가
baegyeong Nov 13, 2024
8ce7266
✨ feat: 기본 로그인 UI 추가
baegyeong Nov 13, 2024
841a281
✨ feat: 로그인 라우터 추가
baegyeong Nov 13, 2024
df29ebe
🐛 fix: 로그인 버튼에 shadow 추가
baegyeong Nov 19, 2024
37f3eb5
🚚 chore: axios 설치
baegyeong Nov 19, 2024
6737e6b
🐛 fix: login 전체 네모박스 추가
baegyeong Nov 19, 2024
906423e
✨ feat: api 인스턴스 구현
baegyeong Nov 19, 2024
eb87bab
✨ feat: 채팅 메시지 컴포넌트 구현
baegyeong Nov 19, 2024
8c4930d
🐛 fix: chatPanel 컴포넌트 가운데 정렬 삭제
baegyeong Nov 19, 2024
2d18eba
✨ feat: 채팅 위 정렬 버튼 추가
baegyeong Nov 19, 2024
961cfe5
🐛 fix: 로그인 UI의 뒷배경 추가
baegyeong Nov 19, 2024
66d2495
🐛 fix: 로그인 layout padding 값 변경
baegyeong Nov 19, 2024
1886773
Feature/#188 - 검색 UI 구현 (#192)
baegyeong Nov 19, 2024
a849fcb
Feature/#194 - 채팅 UI 구현 (#195)
baegyeong Nov 19, 2024
42ad46b
Feature/#159 - 로그인 UI 구현 (#196)
baegyeong Nov 19, 2024
2aba034
🚚 chore: instance 정의 파일 위치 수정
baegyeong Nov 20, 2024
63090e0
🐛 fix: console.log 삭제
baegyeong Nov 20, 2024
75234bc
✨ feat: 주식 가격 상승순 api 조회 함수 및 커스텀훅 구현
baegyeong Nov 20, 2024
b629d04
✨ feat: 주식 가격 하락순 api 조회 함수 및 커스텀훅 구현
baegyeong Nov 20, 2024
da9bca5
✨ feat: 주식 메인페이지에서 가격 상승, 하락 api 호출
baegyeong Nov 20, 2024
5f4d6ca
🐛 fix: response에 따라 detail type 변경
baegyeong Nov 20, 2024
2ec58e1
🐛 fix: 상승/하락 순 쿼리를 하나의 쿼리로 묶어서 호출(분기처리)
baegyeong Nov 20, 2024
b5c838b
✨ feat: 조회수 기준으로 주식 불러오도록 api 설정
baegyeong Nov 20, 2024
593469e
Feature/#40 - 주식 가격 상승/하락순, 조회수순 api 호출 (#205)
baegyeong Nov 21, 2024
38a6945
✨ feat: 주식 개별 조회수 증가 api 연결 및 커스텀훅 구현
baegyeong Nov 21, 2024
f20539c
✨ feat: link 클릭시 mutate 요청 보내도록 설정
baegyeong Nov 21, 2024
9b252ac
Feature/#123 - 주식 조회수 증가 api 연결 (#206)
baegyeong Nov 21, 2024
6d25f81
🐛 fix: 검색창이 그래프에 가려지는 문제 해결
baegyeong Nov 21, 2024
56cc7d9
✨ feat: 로그인 상태를 받아오는 api 호출
baegyeong Nov 21, 2024
3348be4
✨ feat: 마이페이지 UI 구현 및 로그인 리다이렉트 추가
baegyeong Nov 21, 2024
5956055
Feature/#52 - 로그인 api 연결 (#213)
baegyeong Nov 21, 2024
4d84118
🚚 chore: socket io 패키지 설치
baegyeong Nov 21, 2024
d2478f3
🐛 fix: sidebar가 뒤로 배치되는 문제 수정
baegyeong Nov 21, 2024
aa7ec39
✨ feat: 채팅 소켓 정의 및 연결 구현
baegyeong Nov 21, 2024
356187f
✨ feat: 채팅 emit listen 이벤트 설정
baegyeong Nov 21, 2024
b15ddde
Feature/#105 - 채팅 웹소켓 연결 (#222)
baegyeong Nov 21, 2024
7cba32a
🐛 fix: ws -\> wss로 수정
baegyeong Nov 21, 2024
bd69976
🐛 fix: layout padding 변경
baegyeong Nov 21, 2024
07b1a4c
Feature/#105 - ws에서 wss로 변경 (#224)
xjfcnfw3 Nov 21, 2024
920c83d
🐛 fix: 웹소켓 쿼리스트링으로 들어가지 않는 문제 수정
baegyeong Nov 21, 2024
9d292df
🐛 fix: useEffect 의존성 배열 수정
baegyeong Nov 21, 2024
a1712f0
Bug - 웹소켓 stockId를 넘기지 못하는 문제 (#225)
baegyeong Nov 21, 2024
0d2f0cb
🐛 fix: 로그인 리다이렉트 url 수정
baegyeong Nov 21, 2024
181eed9
fix: 로그인 리다이렉트 url 수정 (#226)
baegyeong Nov 21, 2024
377cedd
🐛 fix: 로그인 url 이동 시 새로고침 되도록 수정
baegyeong Nov 21, 2024
b57d819
fix: 로그인 url 이동 시 새로고침 되도록 수정 (#227)
baegyeong Nov 21, 2024
12661ab
🐛 fix: 웹소켓 커스텀훅 추상화 수정
baegyeong Nov 21, 2024
c48471f
fix: 웹소켓 커스텀훅 추상화 수정 (#228)
swkim12345 Nov 21, 2024
f782fe2
🐛 fix: 서버 이슈로 목데이터로 잠시 대체
baegyeong Nov 22, 2024
fc9589e
fix: 서버 이슈로 목데이터로 잠시 대체 (#229)
baegyeong Nov 22, 2024
7c40223
🐛 fix: 사용하지 않는 변수 주석 처리
baegyeong Nov 22, 2024
dca2079
🚚 chore: zod 설치
baegyeong Nov 24, 2024
ecc018e
✨ feat: get, post 요청 유틸 함수 구현 (zod 유효성 검사 추가)
baegyeong Nov 24, 2024
0fbec7c
✨ feat: 주식 상세 조회 스키마 정의 및 api 요청 구현
baegyeong Nov 24, 2024
8c2ffaf
✨ feat: 주식 조회수 증가 스키마 정의 및 타입 수정
baegyeong Nov 24, 2024
49157cb
✨ feat: 주식 조회수순 조회 스키마 정의 및 타입 수정
baegyeong Nov 24, 2024
d591c44
✨ feat: 주식 가격순 타입 수정
baegyeong Nov 24, 2024
d2421e4
✨ feat: 로그인 상태 조회 스키마 정의
baegyeong Nov 24, 2024
ded8dd0
✨ feat: 채팅 response 데이터 스키마 정의
baegyeong Nov 24, 2024
f97cf06
🐛 fix: get, post 요청 시 parse 대신 safeParse 사용
baegyeong Nov 24, 2024
346830f
Feature/#231 - zod 적용 (#237)
baegyeong Nov 25, 2024
bbc1167
🐛 fix: 거래량 지표가 두번 반복되므로 삭제
baegyeong Nov 25, 2024
75d045b
✨ feat: 스크롤바 스타일 지정
baegyeong Nov 25, 2024
beb8181
✨ feat: 알람 추가 UI 구현
baegyeong Nov 25, 2024
d326cc0
✨ feat: 알람 정보를 보여주는 컴포넌트 구현
baegyeong Nov 25, 2024
0a0ea68
✨ feat: alarm 컴포넌트를 상세페이지의 알림창에서 렌더링하도록 추가
baegyeong Nov 25, 2024
2e79589
✨ feat: 사이드바의 알림창 구현
baegyeong Nov 25, 2024
be89481
✨ feat: 마이페이지 알림, 주식 정보 기본 UI 구현
baegyeong Nov 25, 2024
606fa73
✨ feat: 채팅이 없을 때 보여주는 안내문구 추가
baegyeong Nov 25, 2024
9af6b02
🐛 fix: 화면에서 항상 컨텐츠의 높이가 꽉차도록 설정
baegyeong Nov 25, 2024
07eb671
🚚 chore: console.log 삭제
baegyeong Nov 25, 2024
eb46d8c
🐛 fix: 안내 문구 말투 변경
baegyeong Nov 25, 2024
f4cf28d
✨ feat: 시간 단위 선택을 위한 라디오 버튼 컴포넌트 구현
baegyeong Nov 25, 2024
8fa325e
✨ feat: 시간단위로 주식 데이터를 받아오기 위한 스키마, api 정의
baegyeong Nov 25, 2024
622525e
✨ feat: api response를 차트 라이브러리에서 요구하는 객체에 맞게 transform
baegyeong Nov 25, 2024
13c68c0
✨ feat: 시간단위를 선택하여 상태관리하는 버튼 추가
baegyeong Nov 25, 2024
d2fb926
🐛 fix: get, post 요청 시 null을 반환하지 않도록 수정
baegyeong Nov 26, 2024
9e6a851
💄 style: 불필요한 async 삭제
baegyeong Nov 26, 2024
776618a
✨ feat: 검색 api 스키마 및 get 요청 정의
baegyeong Nov 26, 2024
f0cab26
🚚 chore: react-lottie-player 라이브러리 설치
baegyeong Nov 26, 2024
a5d0843
✨ feat: 검색 결과에 따른 렌더링 처리
baegyeong Nov 26, 2024
852ba5c
Feature/#241 - 알림창 관련 UI 구현 (#244)
baegyeong Nov 26, 2024
081191f
✨ feat: 그래프 이동 막는 옵션 추가
baegyeong Nov 26, 2024
c96092e
🐛 fix: url params에서 stockId를 받아오도록 수정
baegyeong Nov 26, 2024
4b7ec8f
🐛 fix: 로더를 보여주기 위해 의도적으로 검색 응답 지연
baegyeong Nov 26, 2024
c9f4b5e
✨ feat: 검색 결과 단어 클릭했을 때 새로고침되도록 옵션 추가
baegyeong Nov 26, 2024
a62a48a
🐛 fix: lastStartTime을 optional로 받도록 설정
baegyeong Nov 26, 2024
bd6b923
💄 style: 대소문자를 올바르지 않게 import하는 코드 수정
baegyeong Nov 26, 2024
0e7e42a
Feature/#245 - 주식 검색, 그래프 조회 구현 (#254)
baegyeong Nov 26, 2024
63b43bb
✨ feat: 검색 결과, 주식 추천에서 개별 클릭시 조회수 증가 및 상세로 이동
baegyeong Nov 26, 2024
8a30fe6
💄 style: 배럴 파일 적용
baegyeong Nov 26, 2024
cd18f70
💄 style: constant 파일 확장자 변경 tsx-\>ts
baegyeong Nov 26, 2024
49aeb4b
✨ feat: 버튼 컴포넌트에 border 추가
baegyeong Nov 26, 2024
ccc27f5
✨ feat: 주식소유 및 현황 확인 스키마, api 정의
baegyeong Nov 26, 2024
f1f2366
✨ feat: 모달 컴포넌트 및 메시지 구현
baegyeong Nov 26, 2024
38b5deb
✨ feat: 유저의 상태에 따라 주식 추가 삭제 분기 처리
baegyeong Nov 26, 2024
f17bd5f
🐛 fix: 쿼리스트링 대신 페이로드를 받도록 수정, 쿼리키 변경
baegyeong Nov 26, 2024
06c1c1f
✨ feat: 소유 주식 삭제 스키마 및 api 정의
baegyeong Nov 26, 2024
5ada400
✨ feat: 모달 종류에 따라 mutate 처리 및 컴포넌트 분리
baegyeong Nov 26, 2024
ac1cee7
✨ feat: 주식 상세 데이터의 타입 정의 및 tooltip 도움말과 확장
baegyeong Nov 26, 2024
7b1322a
✨ feat: 주식 상세 데이터 컴포넌트 재분리
baegyeong Nov 26, 2024
637d207
🚚 chore: 파일명 변경
baegyeong Nov 26, 2024
4945d27
💄 style: import 폴더명 변경
baegyeong Nov 26, 2024
103e807
🐛 fix: api 명세에 맞춰서 timeUnit -\> timeunit 변경
baegyeong Nov 27, 2024
66bbbe8
Feature/#124 - 주식 소유 관련 기능 구현 (#262)
baegyeong Nov 27, 2024
30ea3dd
Feature/#255 - 주식 상세 데이터를 렌더링 (#265)
baegyeong Nov 27, 2024
18e8580
✨ feat: 테스터 로그인 추가
baegyeong Nov 27, 2024
269dfa7
🐛 fix: socketChat에 forceNew 옵션 추가
baegyeong Nov 27, 2024
ccc759b
🐛 fix: 로그인 상태 엔드포인트 수정
baegyeong Nov 27, 2024
6844f68
🐛 fix: timeunit 수정
baegyeong Nov 27, 2024
a5c1d4c
🐛 fix: api 잘못된 요청 수정
baegyeong Nov 27, 2024
d7f3d23
🐛 fix: 주식상세 정보 map으로 렌더링 시 key값 추가
baegyeong Nov 27, 2024
96d56eb
✨ feat: 실시간 주식 데이터 웹소켓 연결
baegyeong Nov 27, 2024
c832852
🐛 fix: 로그인 안한 상태에서의 주식 소유 시도 시 로그인 유도 메시지 추가
baegyeong Nov 27, 2024
a897fef
✨ feat: 채팅 좋아요 스키마, api 정의
baegyeong Nov 27, 2024
37424ba
✨ feat: 채팅 좋아요 api 연결 및 유저 상태에 따른 placeholder 분기
baegyeong Nov 27, 2024
403ec95
🐛 fix: 홈화면에 주식 메인페이지가 띄워지도록 설정
baegyeong Nov 27, 2024
5020fa0
✨ feat: 주식 소유 요청 시 바로 상태가 업데이트 되도록 설정
baegyeong Nov 27, 2024
52c1d0f
🐛 fix: 조회수순 조회 스키마 변경
baegyeong Nov 27, 2024
43ca826
🐛 fix: /stocks와 홈 모두 주식 메인페이지로 라우터 설정
baegyeong Nov 27, 2024
0f5d68a
✨ feat: 채팅 작성자는 색상이 다르게 보이도록 설정
baegyeong Nov 27, 2024
5714087
✨ feat: 로그인 상태 api에 nickname 추가 반영
baegyeong Nov 27, 2024
ad039d7
✨ feat: 채팅 입력시 글자수 표시하도록 설정
baegyeong Nov 27, 2024
a94f2eb
✨ feat: 채팅 좋아요 클릭시 좋아요 숫자도 변화하도록 수정
baegyeong Nov 28, 2024
abb3909
🐛 fix: 유저 닉네임이 null로 들어오는 경우 대비하여 스키마 변경
baegyeong Nov 28, 2024
f4a3407
✨ feat: 채팅 입력시 UI에 바로 반영되도록 웹소켓 로직 수정
baegyeong Nov 28, 2024
d48f0b3
✨ feat: 가격 상승하락순 api 명세에 따라 수정
baegyeong Nov 28, 2024
fcb742f
✨ feat: 채팅 업데이트 될 때 UI에 바로 반영되도록 구현
baegyeong Nov 28, 2024
7135af3
🐛 fix: 채팅 입력하지 못할 시 배경색 어둡게 변화
baegyeong Nov 28, 2024
b2229af
✨ feat: 주주 사용자만 채팅 확인할 수 있도록 수정
baegyeong Nov 28, 2024
551bacd
✨ feat: axios interceptor 추가
baegyeong Nov 28, 2024
c2791b0
✨ feat: 주식 상세 페이지 반응형 적용
baegyeong Nov 28, 2024
a0515ed
✨ feat: axios timeout 수정
baegyeong Nov 28, 2024
224125a
🐛 fix: 채팅 좋아요를 주주사용자만 할 수 있도록 제한
baegyeong Nov 28, 2024
6f7d63e
✨ feat: 채팅 좋아요 4개 이하부터 전부 블러처리
baegyeong Nov 28, 2024
d365be3
🐛 fix: 반응형 전체 레이아웃 padding 수정
baegyeong Nov 28, 2024
ad68f42
✨ feat: 구글 로그인 버튼 클릭시 새로고침 되도록 설정
baegyeong Nov 28, 2024
019b38b
✨ feat: 메인페이지에 지수 정보 띄우게 설정
baegyeong Nov 28, 2024
2d86f79
✨ feat: 지수정보에 거래량 정보 삭제
baegyeong Nov 28, 2024
91a6f6c
✨ feat: 조회수 기반 데이터 불러오는 기능 수정
baegyeong Nov 28, 2024
88ff007
✨ feat: 가장 최신 채팅에서 작성자가 아닌 자신의 닉네임이 보이는 문제 수정
baegyeong Nov 28, 2024
9216efa
🐛 fix: 주식 상세페이지 이동 경로 수정
baegyeong Nov 28, 2024
78b730d
🐛 fix: 채팅 메시지 없을 때 emit 보내지 않도록 수정
baegyeong Nov 28, 2024
8ab4ba8
✨ feat: 종목 정보가 없을 때 안내 문구 추가
baegyeong Nov 28, 2024
b8486c6
✨ feat: 입력창에 대해서 autoFocus 지정
baegyeong Nov 28, 2024
9ef67ba
🐛 fix: 채팅이 가로로 스크롤되는 문제 수정
baegyeong Nov 28, 2024
db4ee59
✨ feat: 마이페이지 유저정보 불러오기 및 닉네임 수정 구현
baegyeong Nov 28, 2024
6a74733
✨ feat: 로그아웃 기능 추가
baegyeong Nov 28, 2024
7cc7e22
✨ feat: 마이페이지에서 주식 정보 소유 정보 및 삭제 표시
baegyeong Nov 28, 2024
82b54f2
🐛 fix: 주식 정보 카드 스타일 수정
baegyeong Nov 28, 2024
78f33ae
✨ feat: 마이페이지의 주식정보에서 클릭 시 상세페이지로 이동하도록 설정
baegyeong Nov 28, 2024
c710526
Merge branch 'dev' into dev-fe
baegyeong Nov 28, 2024
8114cac
Merge branch 'dev-fe' into feature/#182
baegyeong Nov 28, 2024
755e39b
Feature/#182 (#292)
baegyeong Nov 28, 2024
478d06d
📦️ ci: 빌드 에러 수정
baegyeong Nov 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion packages/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,17 @@
},
"dependencies": {
"@tanstack/react-query": "^5.59.19",
"axios": "^1.7.7",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.1",
"lightweight-charts": "^4.2.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-lottie-player": "^2.1.0",
"react-router-dom": "^6.28.0",
"tailwind-merge": "^2.5.4"
"socket.io-client": "^4.8.1",
"tailwind-merge": "^2.5.4",
"zod": "^3.23.8"
},
"devDependencies": {
"@chromatic-com/storybook": "3.2.2",
Expand Down
24 changes: 24 additions & 0 deletions packages/frontend/src/apis/config/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import axios, { AxiosError } from 'axios';

export const instance = axios.create({
baseURL: import.meta.env.VITE_BASE_URL,
timeout: 1000,
withCredentials: true,
});

instance.interceptors.response.use(
(response) => response,
async (error: AxiosError) => {
const status = error.response?.status;

if (status === 400) {
alert('잘못된 요청입니다.');
}

if (status === 403) {
alert('로그인이 필요합니다.');
location.href = '/login';
}
return Promise.reject(error);
},
);
1 change: 1 addition & 0 deletions packages/frontend/src/apis/queries/auth/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './useGetLoginStatus';
55 changes: 55 additions & 0 deletions packages/frontend/src/apis/queries/auth/schema.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { z } from 'zod';

export const GetLoginStatusSchema = z.object({
message: z.enum(['Authenticated', 'Not Authenticated']),
nickname: z.string().nullish(),
});

export type GetLoginStatus = z.infer<typeof GetLoginStatusSchema>;

export const GetTestLoginSchema = z.object({
password: z.string(),
username: z.string(),
});

export type GetTestLogin = z.infer<typeof GetTestLoginSchema>;

export const GetUserInfoSchema = z.object({
nickname: z.string(),
subName: z.string(),
createdAt: z.string().datetime(),
email: z.string(),
type: z.string(),
});

export type GetUserInfo = z.infer<typeof GetUserInfoSchema>;

export const PostUserNicknameSchema = z.object({
message: z.string(),
date: z.string().datetime(),
});

export type PostUserNickname = z.infer<typeof PostUserNicknameSchema>;

export const PostLogoutSchema = z.object({
message: z.string(),
});

export type PostLogout = z.infer<typeof PostLogoutSchema>;

export const GetUserStockSchema = z.object({
id: z.number(),
stockId: z.string(),
name: z.string(),
isTrading: z.boolean(),
groupCode: z.string(),
createdAt: z.string().datetime(),
});

export type GetUserStock = z.infer<typeof GetUserStockSchema>;

export const GetUserStockResponseSchema = z.object({
userStocks: z.array(GetUserStockSchema),
});

export type GetUserStockResponse = z.infer<typeof GetUserStockResponseSchema>;
16 changes: 16 additions & 0 deletions packages/frontend/src/apis/queries/auth/useGetLoginStatus.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { useQuery } from '@tanstack/react-query';
import { GetLoginStatusSchema, type GetLoginStatus } from './schema';
import { get } from '@/apis/utils/get';

const getLoginStatus = () =>
get<GetLoginStatus>({
schema: GetLoginStatusSchema,
url: '/api/auth/status',
});

export const useGetLoginStatus = () => {
return useQuery({
queryKey: ['loginStatus'],
queryFn: getLoginStatus,
});
};
21 changes: 21 additions & 0 deletions packages/frontend/src/apis/queries/auth/useGetTestLogin.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { useQuery } from '@tanstack/react-query';
import { GetTestLoginSchema, type GetTestLogin } from './schema';
import { get } from '@/apis/utils/get';

const getTestLogin = ({ password, username }: GetTestLogin) =>
get({
schema: GetTestLoginSchema,
url: '/api/auth/tester/login',
params: {
password,
username,
},
});

export const useGetTestLogin = ({ password, username }: GetTestLogin) => {
return useQuery({
queryKey: ['testLogin', password, username],
queryFn: () => getTestLogin({ password, username }),
enabled: false,
});
};
16 changes: 16 additions & 0 deletions packages/frontend/src/apis/queries/auth/useGetUserInfo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { useQuery } from '@tanstack/react-query';
import { GetUserInfoSchema, type GetUserInfo } from './schema';
import { get } from '@/apis/utils/get';

const getUserInfo = () =>
get<GetUserInfo>({
schema: GetUserInfoSchema,
url: '/api/user/info',
});

export const useGetUserInfo = () => {
return useQuery({
queryKey: ['userInfo'],
queryFn: getUserInfo,
});
};
19 changes: 19 additions & 0 deletions packages/frontend/src/apis/queries/auth/useGetUserStock.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { useQuery } from '@tanstack/react-query';
import {
GetUserStockResponseSchema,
type GetUserStockResponse,
} from './schema';
import { get } from '@/apis/utils/get';

const getUserStock = () =>
get<GetUserStockResponse>({
schema: GetUserStockResponseSchema,
url: '/api/stock/user',
});

export const useGetUserStock = () => {
return useQuery({
queryKey: ['userStock'],
queryFn: getUserStock,
});
};
16 changes: 16 additions & 0 deletions packages/frontend/src/apis/queries/auth/usePostLogout.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { useMutation } from '@tanstack/react-query';
import { PostLogout, PostLogoutSchema } from './schema';
import { post } from '@/apis/utils/post';

const postLogout = () =>
post<PostLogout>({
schema: PostLogoutSchema,
url: '/api/auth/logout',
});

export const usePostLogout = () => {
return useMutation({
mutationKey: ['logout'],
mutationFn: postLogout,
});
};
22 changes: 22 additions & 0 deletions packages/frontend/src/apis/queries/auth/usePostUserNickname.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { PostUserNickname, PostUserNicknameSchema } from './schema';
import { post } from '@/apis/utils/post';

const postUserNickname = ({ nickname }: { nickname: string }) =>
post<PostUserNickname>({
params: { nickname },
schema: PostUserNicknameSchema,
url: '/api/user/info',
});

export const usePostUserNickname = ({ nickname }: { nickname: string }) => {
const queryClient = useQueryClient();

return useMutation({
mutationKey: ['userNickname'],
mutationFn: () => postUserNickname({ nickname }),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['userInfo'] });
},
});
};
2 changes: 2 additions & 0 deletions packages/frontend/src/apis/queries/chat/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './schema';
export * from './usePostChatLike';
17 changes: 17 additions & 0 deletions packages/frontend/src/apis/queries/chat/schema.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { z } from 'zod';

export const GetChatLikeRequestSchema = z.object({
chatId: z.number(),
});

export type GetChatLikeRequest = z.infer<typeof GetChatLikeRequestSchema>;

export const GetChatLikeResponseSchema = z.object({
chatId: z.number(),
stockId: z.string(),
likeCount: z.number(),
message: z.string(),
date: z.string().datetime(),
});

export type GetChatLikeResponse = z.infer<typeof GetChatLikeResponseSchema>;
26 changes: 26 additions & 0 deletions packages/frontend/src/apis/queries/chat/usePostChatLike.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import {
GetChatLikeResponseSchema,
type GetChatLikeRequest,
type GetChatLikeResponse,
} from './schema';
import { post } from '@/apis/utils/post';

const postChatLike = ({ chatId }: GetChatLikeRequest) =>
post<GetChatLikeResponse>({
params: { chatId },
schema: GetChatLikeResponseSchema,
url: '/api/chat/like',
});

export const usePostChatLike = () => {
const queryClient = useQueryClient();

return useMutation({
mutationKey: ['chatLike'],
mutationFn: ({ chatId }: GetChatLikeRequest) => postChatLike({ chatId }),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['chatLike'] });
},
});
};
6 changes: 6 additions & 0 deletions packages/frontend/src/apis/queries/stock-detail/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export * from './useGetStockDetail';
export * from './usePostStockView';
export * from './usePostStockUser';
export * from './schema';
export * from './useGetStockOwnership';
export * from './useDeleteStockUser';
57 changes: 57 additions & 0 deletions packages/frontend/src/apis/queries/stock-detail/schema.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { z } from 'zod';

export const GetStockRequestSchema = z.object({
stockId: z.string(),
});

export type GetStockRequest = z.infer<typeof GetStockRequestSchema>;

export const GetStockResponseSchema = z.object({
marketCap: z.number(),
name: z.string(),
eps: z.number(),
per: z.string(),
high52w: z.number(),
low52w: z.number(),
});

export type GetStockResponse = z.infer<typeof GetStockResponseSchema>;

export const PostStockRequestSchema = z.object({
stockId: z.string(),
});

export type PostStockRequest = z.infer<typeof PostStockRequestSchema>;

export const PostStockResponseSchema = z.object({
id: z.string(),
message: z.string(),
date: z.string().datetime(),
});

export type PostStockResponse = z.infer<typeof PostStockResponseSchema>;

export const GetStockOwnershipResponseSchema = z.object({
isOwner: z.boolean(),
date: z.string().datetime(),
});

export type GetStockOwnershipResponse = z.infer<
typeof GetStockOwnershipResponseSchema
>;

export const DeleteStockUserRequestSchema = z.object({
stockId: z.string(),
});

export type DeleteStockUserRequest = z.infer<
typeof DeleteStockUserRequestSchema
>;

export const DeleteStockUserSchema = z.object({
id: z.string(),
message: z.string(),
date: z.string().datetime(),
});

export type DeleteStockUser = z.infer<typeof DeleteStockUserRequestSchema>;
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { useMutation, UseMutationOptions } from '@tanstack/react-query';
import {
DeleteStockUserSchema,
type DeleteStockUserRequest,
type DeleteStockUser,
} from './schema';
import { deleteRequest } from '@/apis/utils/delete';

const deleteStockUser = ({ stockId }: DeleteStockUserRequest) =>
deleteRequest<DeleteStockUser>({
schema: DeleteStockUserSchema,
url: '/api/stock/user',
data: { stockId },
});

export const useDeleteStockUser = (
options?: UseMutationOptions<DeleteStockUser, Error, DeleteStockUserRequest>,
) => {
return useMutation({
mutationKey: ['deleteStockUser'],
mutationFn: ({ stockId }: DeleteStockUserRequest) =>
deleteStockUser({ stockId }),
...options,
});
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { useQuery } from '@tanstack/react-query';
import {
GetStockResponseSchema,
type GetStockRequest,
type GetStockResponse,
} from './schema';
import { get } from '@/apis/utils/get';

const getStockDetail = ({ stockId }: GetStockRequest) =>
get<GetStockResponse>({
schema: GetStockResponseSchema,
url: `/api/stock/${stockId}/detail`,
});

export const useGetStockDetail = ({ stockId }: GetStockRequest) => {
return useQuery({
queryKey: ['stockDetail', stockId],
queryFn: () => getStockDetail({ stockId }),
enabled: !!stockId,
});
};
Loading
Loading