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

feat: 문제 페이지 분기 해결 #104

Merged
merged 265 commits into from
Apr 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
265 commits
Select commit Hold shift + click to select a range
1c7dbfe
feat:email형식 맞을 시 인증번호 입력칸 disabled해제
KyuTae98 Jan 4, 2024
0aeac25
feat: 회원가입 인증번호 간단 비동기 처리
KyuTae98 Jan 6, 2024
6c8b565
Merge branch 'main' into main
KyuTae98 Jan 7, 2024
7d3a3c5
feat: 회원가입 message 작성
KyuTae98 Jan 11, 2024
7025dcf
feat: 회원가입 error msg까지 완성
KyuTae98 Jan 12, 2024
44a203c
feat: 회원가입 서버통신 제외 완료
KyuTae98 Jan 12, 2024
483edc5
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Jan 12, 2024
ee7accc
Merge branch 'main' into main
KyuTae98 Jan 12, 2024
92c47ff
feat: email 존재하는지 확인
KyuTae98 Jan 14, 2024
2f25e9a
feat: 회원가입 목업 완성
KyuTae98 Jan 14, 2024
558f960
feat: 회원가입 목업 완성
KyuTae98 Jan 14, 2024
76e2362
Merge branch 'main' into main
KyuTae98 Jan 14, 2024
3a72447
feat: 구글 로그인 oauth 준비
KyuTae98 Jan 16, 2024
9c3f02e
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Jan 16, 2024
c8043f7
feat: 구글 소셜 로그인 연동
KyuTae98 Jan 24, 2024
fc3e97b
feat: 소셜로그인 수정 중
KyuTae98 Jan 24, 2024
9b468a0
Merge branch 'main' into main
KyuTae98 Jan 24, 2024
380615b
feat: 소셜 로그인 확인
KyuTae98 Jan 24, 2024
83da3af
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Jan 24, 2024
c10e580
Merge branch 'main' into main
KyuTae98 Jan 24, 2024
44a4699
feat: 로그인 기능 개발
KyuTae98 Jan 26, 2024
0d39464
feat: routes 수정
KyuTae98 Jan 26, 2024
fb11360
feat: 자체 로그인 개발
KyuTae98 Jan 29, 2024
e1478b1
feat: 로그인 코드 수정
KyuTae98 Jan 29, 2024
26d27ba
feat: 로그인 페이지 개발 준비
KyuTae98 Feb 12, 2024
a3cf182
feat: 로그인 페이지 나누기
KyuTae98 Feb 12, 2024
e430cd7
feat: 로그인 기능 쿠키 받기 완료
KyuTae98 Feb 12, 2024
17b3a9b
Merge branch 'main' into main
KyuTae98 Feb 13, 2024
06c8b1a
feat:로그인 유무를 위한 HOC준비
KyuTae98 Feb 13, 2024
52cd61f
feat: 로그인, 회원가입시 리다이랙션 설정
KyuTae98 Feb 13, 2024
51b9da1
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Feb 13, 2024
ed2648a
feat: xterm 준비
KyuTae98 Feb 18, 2024
8a35ffb
feat: Xterm 준비
KyuTae98 Feb 19, 2024
0b85516
feat: Xterm css도입
KyuTae98 Feb 19, 2024
ea6be64
feat: Xterm enter backspace 연결
KyuTae98 Feb 19, 2024
b2adf4a
fix: 회원가입, 로그인 url 수정
KyuTae98 Feb 20, 2024
12234fa
feat: xterm 준비
KyuTae98 Feb 20, 2024
dc6576d
fix: useffect로 인해 xterm 2개 나오는거 수정
KyuTae98 Feb 21, 2024
85065ec
feat: xterm 서버와 연결
KyuTae98 Feb 23, 2024
d73cbf4
Merge branch 'main' into main
KyuTae98 Feb 23, 2024
e587f50
feat: tailwind 설정 완료
KyuTae98 Feb 26, 2024
e7f09fc
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Feb 26, 2024
2352ec4
Merge branch 'main' into main
KyuTae98 Feb 26, 2024
82a9746
feat: font 설정 완료
KyuTae98 Feb 26, 2024
8521f5a
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Feb 26, 2024
8625ee9
Merge branch 'main' into main
KyuTae98 Feb 26, 2024
c09318c
feat: login and sign button tailwind이용
KyuTae98 Feb 26, 2024
be8fdf0
feat: login signup container css 적용
KyuTae98 Feb 26, 2024
1369c57
feat: 회원가입 페이지 css 적용
KyuTae98 Feb 26, 2024
8fef42f
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Feb 26, 2024
cfdc2ec
feat: loginSignUp tailwind 적용
KyuTae98 Feb 27, 2024
7763f9d
feat: signup메일 인증으로 변환
KyuTae98 Feb 27, 2024
6d97b14
fix: signip 불필요한 함수 정리
KyuTae98 Feb 27, 2024
c41c14e
fix: login signup css 수정
KyuTae98 Feb 27, 2024
8099fd3
feat: login signup description 완성
KyuTae98 Feb 27, 2024
2784514
Merge branch 'main' into main
KyuTae98 Feb 27, 2024
7f73080
fix: 폴더명 수정중
KyuTae98 Feb 28, 2024
e19630e
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Feb 28, 2024
47002cf
fix: 폴더명 변경
KyuTae98 Feb 28, 2024
150e305
feat: git 폴더명 바꾸는중
KyuTae98 Feb 28, 2024
d751247
feat: 폴더명 변경에 맞게 파일 수정
KyuTae98 Feb 28, 2024
d142345
feat: 폴더명 수정
KyuTae98 Feb 28, 2024
6ab546b
feat: zustand 준비
KyuTae98 Feb 28, 2024
c55937e
Merge https://github.com/PhantomOfLINUX/POL_Front into KyuTae98-main
KyuTae98 Feb 28, 2024
746f582
Merge branch 'KyuTae98-main'
KyuTae98 Feb 28, 2024
aba1498
feat: terminal document에서 useRef로 변경
KyuTae98 Feb 28, 2024
46fd788
feat: ci/cd error해결을 위한 Xterm 수정
KyuTae98 Feb 28, 2024
d0df620
Merge branch 'main' into main
KyuTae98 Feb 28, 2024
c7d762b
fix:xterm에 dynamic 도입
KyuTae98 Feb 28, 2024
91d267e
feat: xterm.tsx 수정
KyuTae98 Feb 28, 2024
57d2f8f
feat: ssr false로 등록
KyuTae98 Feb 28, 2024
dabd38b
Merge branch 'main' into main
KyuTae98 Feb 28, 2024
0031ff7
feat: xterm 수정
KyuTae98 Feb 28, 2024
9108052
feat: Xterm 수정
KyuTae98 Feb 28, 2024
f83da05
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Feb 28, 2024
8134cbe
feat: header 수정
KyuTae98 Feb 28, 2024
f0b8097
feat: Login Form 비밀번호 회원가입하기 수정
KyuTae98 Feb 28, 2024
4b82709
feat: zustand 초기 세팅
KyuTae98 Feb 28, 2024
fa50834
feat: zustand login 연동
KyuTae98 Feb 28, 2024
4f69ae9
feat: accessToken 저장
KyuTae98 Feb 28, 2024
c90d30b
fix: 회원가입 이메일 인증 get에서 post로 변경
KyuTae98 Feb 29, 2024
ce04379
feat: router custom함
KyuTae98 Feb 29, 2024
7b24684
feat: 로그아웃 준비
KyuTae98 Feb 29, 2024
591a9af
feat: css 수정
KyuTae98 Feb 29, 2024
071aafa
Merge branch 'main' into main
KyuTae98 Feb 29, 2024
b488236
feat: signup, login input name, id 입력
KyuTae98 Mar 1, 2024
3e36c2d
feat: 소셜 로그인 준비
KyuTae98 Mar 1, 2024
c0f261a
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 1, 2024
400e14a
feat: social 로그인 css 완성
KyuTae98 Mar 1, 2024
f1b76fc
feat: 소셜 로그인 부분 css 수정 및 회원가입에 붙이기
KyuTae98 Mar 1, 2024
9b3a35e
Merge branch 'main' into main
KyuTae98 Mar 1, 2024
84b2f63
feat: 로그아웃 기능 개발, access Token 쿠키로 이동
KyuTae98 Mar 3, 2024
2052cce
feat: login 코드 제거
KyuTae98 Mar 3, 2024
60b1fcb
Merge branch 'main' into main
KyuTae98 Mar 3, 2024
3d7c33e
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 3, 2024
6cfbf45
fix: 불필요한 코드 제거
KyuTae98 Mar 5, 2024
c0cb0a2
feat: accessToken이 없으면 /login으로 이동
KyuTae98 Mar 5, 2024
b1839d0
fet: middleware를 통한 엑세스 토큰 재발행
KyuTae98 Mar 5, 2024
d37147b
Merge branch 'main' into main
KyuTae98 Mar 5, 2024
27a4515
feat: Xterm 확인 및 로그인 router 병경
KyuTae98 Mar 5, 2024
b33593f
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 5, 2024
f1ccb7a
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 5, 2024
9a2ad7a
feat: xterm wss로 변경
KyuTae98 Mar 5, 2024
ffadb10
fix: wss 수정
KyuTae98 Mar 5, 2024
2e32ab4
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 5, 2024
eb0632c
fix: xterm wss 수정
KyuTae98 Mar 5, 2024
2282da1
feat: 페이지 들어올때 엑세스 토큰이 없고 리프래시 토큰이 있을시 재발급
KyuTae98 Mar 6, 2024
53713cb
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 6, 2024
bfa1b04
feat: 엑세스 토큰 시간 설정
KyuTae98 Mar 6, 2024
508617f
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 6, 2024
16d71bd
fix: token 시간 설정
KyuTae98 Mar 6, 2024
08d92cc
feat: 소셜 로그인을 위한 이미지 컴포넌트화
KyuTae98 Mar 7, 2024
c866937
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 7, 2024
a06326d
feat: 소셜로그인 확인 용도
KyuTae98 Mar 7, 2024
05cf699
feat: 소셜로그인 수정
KyuTae98 Mar 7, 2024
c978794
Merge branch 'main' into main
KyuTae98 Mar 7, 2024
a478e42
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 7, 2024
3a88505
fix: 토큰 재발행 후 로그아웃 안되는 버그 fix
KyuTae98 Mar 8, 2024
12bbf69
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 8, 2024
ebb8d98
feat: 배포 badgate 수정
KyuTae98 Mar 8, 2024
7b18064
fix: 토큰 재발행 후 로그아웃 버그 fix
KyuTae98 Mar 8, 2024
420f26a
fix: 쿠키 도메인에 따라 맞게 생성
KyuTae98 Mar 8, 2024
389e736
Merge branch 'main' into main
KyuTae98 Mar 8, 2024
40b768d
fix: 토큰 재발행 고치기
KyuTae98 Mar 8, 2024
43bf137
fix: 다시 원상복구
KyuTae98 Mar 8, 2024
42c413c
Merge branch 'main' into main
KyuTae98 Mar 8, 2024
554f4cd
fix: 다시 도전
KyuTae98 Mar 8, 2024
0e5500a
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 8, 2024
e49a8f1
feat: 다시 도전
KyuTae98 Mar 8, 2024
b934714
Merge branch 'main' into main
KyuTae98 Mar 8, 2024
b817ccb
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 8, 2024
8ea6588
feat: 다시 도전
KyuTae98 Mar 8, 2024
e5d7a1d
feat: 서버 url 변경
KyuTae98 Mar 8, 2024
a028ba6
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 8, 2024
ac2a0ad
feat: 소셜 로그인 location 위치 조정
KyuTae98 Mar 8, 2024
9d5000e
feat: 소셜로그인 redirect관리
KyuTae98 Mar 8, 2024
199d31b
Merge branch 'main' into main
KyuTae98 Mar 8, 2024
f237879
feat: next url 다시 설정
KyuTae98 Mar 8, 2024
ce4193b
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 8, 2024
951bff6
Merge branch 'main' into main
KyuTae98 Mar 8, 2024
fd28fa0
feat: 다시 수정
KyuTae98 Mar 8, 2024
42a289a
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 8, 2024
72edf63
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 8, 2024
feceb17
feat: url 변경
KyuTae98 Mar 8, 2024
7d0c7c5
feat: 소셜 로그인 refresh Token저장
KyuTae98 Mar 10, 2024
f56c6d3
Merge branch 'main' into main
KyuTae98 Mar 10, 2024
2ed1cba
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 10, 2024
6013666
feat: 소셜로그인 response 밖으로 꺼내기
KyuTae98 Mar 10, 2024
72f5b63
feat: URL 변경
KyuTae98 Mar 10, 2024
4fbd780
Merge branch 'main' into main
KyuTae98 Mar 10, 2024
cc174c9
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 10, 2024
33ffb6a
fix: 소셜로그인 json모양 해체
KyuTae98 Mar 10, 2024
b642f46
fix: 토큰 domain설정
KyuTae98 Mar 10, 2024
6551378
feat: 토큰 도메인 설정
KyuTae98 Mar 10, 2024
9de0a69
Merge branch 'main' into main
KyuTae98 Mar 10, 2024
8d0d16a
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 10, 2024
59e530d
fix: 쿠키 설정
KyuTae98 Mar 10, 2024
141dbcd
fix: 개발환경 토큰 수정, 리프레시 토큰 시간 설정
KyuTae98 Mar 13, 2024
6f5a8e2
Merge branch 'main' into main
KyuTae98 Mar 13, 2024
b0b9856
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 13, 2024
c8d69bf
fix: hostname 확인
KyuTae98 Mar 13, 2024
ca20c43
fix: request.url 버그 찾기 위한 과정
KyuTae98 Mar 13, 2024
77f4df6
Merge branch 'main' into main
KyuTae98 Mar 13, 2024
7cea748
feat: next port번호 변경
KyuTae98 Mar 13, 2024
eb4571b
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 13, 2024
905231a
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 13, 2024
e7764cb
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 15, 2024
1c69b73
fix: footer layout으로 이동
KyuTae98 Mar 15, 2024
49ebac0
fix: header 버튼 재사용성 높이기 위해 정리
KyuTae98 Mar 15, 2024
399a6b0
feat: middleware 수정
KyuTae98 Mar 15, 2024
b0de3db
fix: 터미널 명령어 한줄띄기 오류 수정
KyuTae98 Mar 15, 2024
ba58392
feat: 문제 페이지 엑세스 토큰 필요 기능
KyuTae98 Mar 15, 2024
344c4dc
Merge branch 'main' into main
KyuTae98 Mar 15, 2024
7e41404
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 15, 2024
d7a196e
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 18, 2024
a59e779
feat: 바로 터미널 볼수있게 하기
KyuTae98 Mar 18, 2024
cabf29a
feat: footer 수정
KyuTae98 Mar 18, 2024
8d0b3b1
feat: middleware 수정
KyuTae98 Mar 18, 2024
ec6ecfb
feat: ProblemStage 세팅
KyuTae98 Mar 18, 2024
798600f
feat: postcss 오류 해결
KyuTae98 Mar 18, 2024
667f5ad
feat: ProgreamStage 개발
KyuTae98 Mar 18, 2024
85e01f0
feat: zustand를 이용한 문제페이지 개발 중
KyuTae98 Mar 19, 2024
e22a3bf
feat: problem select 동적으로 저장
KyuTae98 Mar 19, 2024
b7e26d3
feat: select list input에 의한 check 완성
KyuTae98 Mar 19, 2024
dd4016c
feat: 문제 list box 개발
KyuTae98 Mar 19, 2024
d399b20
feat: 문제 리스트 외부 클릭시 문제 리스트 닫힘
KyuTae98 Mar 19, 2024
7e61925
feat: 실습 문제리스트 개발 준비
KyuTae98 Mar 22, 2024
f1e02cd
Merge branch 'develop' into main
KyuTae98 Mar 22, 2024
1577e16
feat: accessToken 확인
KyuTae98 Mar 25, 2024
98df27f
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 25, 2024
7c6d692
feat: 쿼리 스트링으로 보내기 준비
KyuTae98 Mar 27, 2024
9ed5596
feat: store 수정
KyuTae98 Mar 27, 2024
d700278
feat: store 이름 변경으로 인한 수정
KyuTae98 Mar 27, 2024
b6b8f3b
feat: 간단한 css 수정
KyuTae98 Mar 27, 2024
8cc51fa
feat: useCheckAccess 수정
KyuTae98 Mar 27, 2024
11a5cd0
feat: useGetStage수정
KyuTae98 Mar 27, 2024
7851d9e
fix: 불필요한 코드 정리
KyuTae98 Mar 28, 2024
8b0b907
Merge branch 'develop' into main
KyuTae98 Mar 28, 2024
c2543aa
fix: querystring으로 하기 위한 마이그래이션
KyuTae98 Mar 28, 2024
c5f0873
feat: query param input의 value에 맞게 제어 완료
KyuTae98 Mar 28, 2024
259f348
fix: selectedBox 수정
KyuTae98 Mar 29, 2024
be5ce3e
fix: 쿼리 스트링으로 마이그레이션
KyuTae98 Mar 29, 2024
5a62e57
feat: conflict 해결
KyuTae98 Mar 29, 2024
4b18311
feat: 다시 연결
KyuTae98 Mar 29, 2024
d5cddb8
Merge branch 'develop' into main
KyuTae98 Mar 29, 2024
a8aecde
feat: pageNation 제외 개발
KyuTae98 Mar 29, 2024
1b22942
fix: git cjfl
KyuTae98 Mar 29, 2024
6066f3a
feat: git 충돌 해결
KyuTae98 Mar 29, 2024
d7bc027
Merge pull request #1 from KyuTae98/develop
KyuTae98 Mar 29, 2024
c07effa
fix: git conflict 해결
KyuTae98 Mar 29, 2024
9be0198
fix:git conflict 고치기
KyuTae98 Mar 29, 2024
e48200c
fix: git 충돌 해결
KyuTae98 Mar 29, 2024
a8c4183
fix: 배포 오류 수정
KyuTae98 Mar 29, 2024
771da73
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Mar 29, 2024
7231355
fix: 문제페이지 css 수정
KyuTae98 Mar 29, 2024
bc89ec7
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Mar 29, 2024
0c03c30
Merge branch 'develop' into main
KyuTae98 Mar 29, 2024
46235d1
fix: select tag 수정
KyuTae98 Apr 1, 2024
ce59d35
feat: pageNation 구현
KyuTae98 Apr 1, 2024
ee33dbc
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Apr 1, 2024
cb21f39
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Apr 1, 2024
35d275c
feat: 페이지네이션 준비
KyuTae98 Apr 3, 2024
54f5816
feat: state 조정
KyuTae98 Apr 3, 2024
025cd3e
feat: pagenation 색변경
KyuTae98 Apr 5, 2024
d89400a
feat: pagenation 완료
KyuTae98 Apr 5, 2024
00b7979
hook 제어
KyuTae98 Apr 5, 2024
d705f8c
feat: localsotrage저장
KyuTae98 Apr 5, 2024
da1e58d
feat: localstorage 쿼리 사용
KyuTae98 Apr 5, 2024
231b65c
feat: 코드 정리
KyuTae98 Apr 5, 2024
53f1e89
feat: 문제페이지 완성
KyuTae98 Apr 5, 2024
684d797
Merge branch 'develop' into main
KyuTae98 Apr 5, 2024
306099e
Develop (#99)
KyuTae98 Apr 5, 2024
7b99f96
feat: Problem 쿼리로 전달
KyuTae98 Apr 6, 2024
406b862
Merge branch 'PhantomOfLINUX:main' into main
KyuTae98 Apr 6, 2024
8d57bb3
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Apr 6, 2024
c327ff4
feat: xterm url 받기
KyuTae98 Apr 6, 2024
73ab371
feat: url 받기 성공
KyuTae98 Apr 6, 2024
37edcb5
feat: socket.io 연결 코드
KyuTae98 Apr 7, 2024
0d4da44
feat: ProblemStage css 수정
KyuTae98 Apr 8, 2024
650ea27
Merge branch 'develop' into main
KyuTae98 Apr 8, 2024
6476b3c
feat: 모달창 개발 중
KyuTae98 Apr 9, 2024
bdef99f
Merge branch 'main' of https://github.com/KyuTae98/POL_Front
KyuTae98 Apr 9, 2024
868ab44
feat: stage 모달 개발
KyuTae98 Apr 9, 2024
891140e
fix: stage 모달 css 수정
KyuTae98 Apr 9, 2024
e3938d5
Merge branch 'develop' of https://github.com/PhantomOfLINUX/POL_Front
KyuTae98 Apr 9, 2024
437a7c2
feat: header 불쾌한 골짜기 처리
KyuTae98 Apr 10, 2024
9b20b10
feat: Suspense를 이용한 로딩 처리
KyuTae98 Apr 10, 2024
baffb68
feat: Xterm 분기점 완료
KyuTae98 Apr 11, 2024
5fcd14b
feat: problemstage input
KyuTae98 Apr 11, 2024
31bd574
feat: loading 이쁜게 처리
KyuTae98 Apr 11, 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
5 changes: 5 additions & 0 deletions public/headerHomeSVG/headerHome.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions public/problemStage/problemStageInput.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 11 additions & 1 deletion src/components/header/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,24 @@ import HeaderBtn from "./HeaderBtn";
import HeaderLogoutBtn from "./HeaderLogoutBtn";
import HeaderMyPageBtn from "./HeaderMyPageBtn";

import Image from 'next/image'

import { cookies } from 'next/headers'

const Header = () => {
const cookiesStore = cookies();
const POL_ACCESS_TOKEN = cookiesStore.get("POL_ACCESS_TOKEN")
return (
<header className="flex w-full px-40 min-h-28 justify-between items-center">
<HeaderBtn href="/" className="text-thema-color font-[1000] text-4xl" >Phantom of Linux</HeaderBtn>
<HeaderBtn href="/" className="text-thema-color font-[1000] text-4xl" >
<Image
src={"./headerHomeSVG/headerHome.svg"}
alt="down"
width={30}
height={30}
style={{ width: 'auto', height: 'auto' }}
/>
</HeaderBtn>
<nav className="flex">
{POL_ACCESS_TOKEN === undefined ?
<>
Expand Down
2 changes: 1 addition & 1 deletion src/components/header/HeaderBtn.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import Link from "next/link"

interface HeaderBtnType {
href:string,
children:string,
children:string|React.ReactNode,
className:string,
}

Expand Down
28 changes: 28 additions & 0 deletions src/components/loading/Loading.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import React from "react";


const Loading = () => {
return(
<div className="w-screen h-96 flex justify-center items-center" role='status' aria-label='loading'>
<div className="grid gap-3">
<div className="flex items-center justify-center">
<svg className="animate-spin border-indigo-600" xmlns="http://www.w3.org/2000/svg" width="76" height="75" viewBox="0 0 76 75" fill="none">
<g id="Group 1000003700">
<circle id="Ellipse 715" cx="38.0004" cy="37.1953" r="28" stroke="#E5E7EB" stroke-width="8" />
<path id="Ellipse 716" d="M49.8079 62.5848C53.142 61.0342 56.138 58.842 58.6248 56.1335C61.1117 53.425 63.0407 50.2532 64.3018 46.7992C65.5629 43.3452 66.1313 39.6767 65.9745 36.003C65.8178 32.3293 64.939 28.7225 63.3884 25.3884C61.8378 22.0544 59.6456 19.0584 56.9371 16.5715C54.2286 14.0847 51.0568 12.1556 47.6028 10.8946C44.1488 9.63351 40.4802 9.06511 36.8066 9.22183C33.1329 9.37855 29.5261 10.2573 26.192 11.808" stroke="url(#paint0_linear_13416_7443)" stroke-width="8" stroke-linecap="round" />
</g>
<defs>
<linearGradient id="paint0_linear_13416_7443" x1="0.803595" y1="23.6159" x2="24.4195" y2="74.3928" gradientUnits="userSpaceOnUse">
<stop stop-color="#4F46E5" />
<stop offset="1" stop-color="#8B5CF6" />
</linearGradient>
</defs>
</svg>
</div>
<span className="text-black text-sm font-normal leading-snug">Loading...</span>
</div>
</div>
)
}

export default Loading
2 changes: 2 additions & 0 deletions src/components/problemStage/ProblemStage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React from "react";

import ProblemStageSelectContainer from "./problemStageSelect/ProblemStageSelectContainer"
import ProblemStageContainer from "./problemStageContainer/ProblemStageContainer"
import ProblemStageForm from "./ProblemStageForm";
import { cookies } from "next/headers";

const ProblemStage = () => {
Expand All @@ -10,6 +11,7 @@ const ProblemStage = () => {
const POL_REFRESH_TOKEN = cookiesStore.get("POL_REFRESH_TOKEN")?.value
return (
<main className="w-full flex flex-col items-center justify-center">
<ProblemStageForm/>
<ProblemStageSelectContainer/>
<ProblemStageContainer
accessToken={POL_ACCESS_TOKEN}
Expand Down
47 changes: 47 additions & 0 deletions src/components/problemStage/ProblemStageForm.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"use client"

import React,{useState} from "react";

import { useSearchParams,useRouter,usePathname } from 'next/navigation'

import Image from "next/image";

const ProblemStageForm = () => {
const [inputValue,setInputValue] = useState<string>("")
const searchParams = useSearchParams();
const router = useRouter();
const pathname = usePathname();
const params = new URLSearchParams(searchParams);

const SubmitInput = (ele:React.FormEvent<HTMLFormElement>) => {
ele.preventDefault()
if(inputValue)
params.set("searchText",inputValue)
else params.delete("searchText")
router.push(pathname+"?"+params.toString());
};


return (
<form onSubmit={(e)=>{SubmitInput(e)}} className="flex items-center justify-center p-3 my-2 w-8/12 h-12 border-solid border rounded-md border-SelectBorder-color">
<button type="submit">
<Image
src={`./problemStage/problemStageInput.svg`}
alt="problemFind"
width={20}
height={20}
style={{ width: '20px', height: '20px' }}
/>
</button>
<input
placeholder="문제 제목으로 찾아볼 수 있어요"
className="ml-3 w-full h-full outline-none"
value={inputValue}
onChange={(e)=>setInputValue(e.target.value)}
/>
</form>
)
}


export default ProblemStageForm
7 changes: 1 addition & 6 deletions src/components/problemStage/ProblemStageModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,4 @@ const ProblemStageModal:React.FC<ProblemStageModalType> = ({modalState,stageId,t
)
}

export default ProblemStageModal

/*
router.push(`/problem?stageId=${stageId}`)

*/
export default ProblemStageModal
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ interface ProblemStageContainerType {

interface Stage {
id: string;
stageCode:string,
title: string;
description: string;
difficultyLevelType: string;
Expand Down Expand Up @@ -46,6 +47,7 @@ const ProblemStageContainer:React.FC<ProblemStageContainerType> = ({accessToken,
<div>
<div className="w-full h-10 px-10 flex justify-evenly items-center border-b-problemStageLi-borderWidth border-problemStageLi-color">
<span className="w-problemStage-isCompleted font-bold">해결</span>
<span className="w-problemStage-title font-bold">문제 번호</span>
<span className="w-problemStage-title font-bold">제목</span>
<span className="w-problemStage-info font-bold">설명</span>
<span className="w-problemStage-width font-bold">난이도</span>
Expand All @@ -54,6 +56,7 @@ const ProblemStageContainer:React.FC<ProblemStageContainerType> = ({accessToken,
{stages?.map(ele=>(
<ProblemStagesLi
key={ele.id}
stageCode={ele.stageCode}
stageId={ele.id}
solved={ele?.completedStatus}
title={ele.title}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,25 @@ import React,{useState} from "react";

import ProblemStageModal from "../ProblemStageModal"

import { useRouter } from "next/navigation";
import Image from 'next/image'

interface ProblemStagesLiType {
title:string,
stageCode:string,
info:string,
level:string,
questionCount:number
solved:string
stageId:string
}

const ProblemStagesLi:React.FC<ProblemStagesLiType> = ({title,info,level,questionCount,solved,stageId}) => {
const router = useRouter();
const [mouseUp, setMouseUp] = useState<boolean>(false)
const ProblemStagesLi:React.FC<ProblemStagesLiType> = ({title,stageCode,info,level,questionCount,solved,stageId}) => {
const [modalState,setModalState] = useState<boolean>(false)
return (
<>
<li onClick={()=>{
setModalState(true)
}} onMouseEnter={(e)=>{setMouseUp(true)}} onMouseLeave={(e)=>{setMouseUp(false)}} className={`${mouseUp?"bg-slate-100":"bg-white"} list-none w-full px-10 h-14 flex items-center justify-evenly border-b-problemStageLi-borderWidth border-problemStageLi-color cursor-pointer`}>
}} className=" hover:bg-slate-100 list-none w-full px-10 h-14 flex items-center justify-evenly border-b-problemStageLi-borderWidth border-problemStageLi-color cursor-pointer">
<span className="w-problemStage-isCompleted">
{solved!=="NOT_COMPLETED"?
<Image
Expand All @@ -35,6 +33,7 @@ const ProblemStagesLi:React.FC<ProblemStagesLiType> = ({title,info,level,questio
style={{ width: '20px', height: '20px' }}
/>:""}
</span>
<span className="w-problemStage-title">{stageCode}</span>
<span className="w-problemStage-title font-bold">{title}</span>
<span className="w-problemStage-info">{info}</span>
<span className="w-problemStage-width">{level}</span>
Expand Down
7 changes: 4 additions & 3 deletions src/components/xterm/Xterm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,17 @@ import { AttachAddon } from 'xterm-addon-attach';

import 'xterm/css/xterm.css';


interface XtermType{
url:string,
query:string
url:string|undefined,
query:string|undefined
}

const Xterm: React.FC<XtermType> = ({url,query}) => {
const terminalRef = useRef<Terminal | null>(null);
const xtermContainerRef = useRef<HTMLDivElement | null>(null);
useEffect(() => {
if (!terminalRef.current && xtermContainerRef.current && url && query) {
if (!terminalRef.current && xtermContainerRef.current && url&&query) {
const newTerminal = new Terminal();
const websocket = new WebSocket(url);
websocket.onopen = () => {
Expand Down
45 changes: 37 additions & 8 deletions src/components/xterm/XtermBox.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,53 @@
"use client"

import React from "react";
import React,{Suspense,useState} from "react";

import useGetXtermUrl from "@/hooks/useGetXtermUrl";

import Xterm from "./Xterm";
import type { Resource } from "@/lib/wrappingPromise";

import XtermModal from "./XtermModal";
import XtermUrlProvider from "./XtermUrlProvider";
import Loding from "@/components/loading/Loading";

interface CheckProblem {
uid: string;
stageId: number;
stageCode: string;
exists: boolean;
}

interface XtermBoxType {
accessToken:string|undefined,
refreshToken:string|undefined
problemSolvedCheck:Resource<CheckProblem> | undefined
}

const XtermBox:React.FC<XtermBoxType> = ({accessToken,refreshToken}) => {
const {url,query} = useGetXtermUrl(accessToken,refreshToken);
const XtermBox:React.FC<XtermBoxType> = ({accessToken,refreshToken,problemSolvedCheck}) => {
const [ModalCheck,setModalCheck] = useState<boolean>(true);
const [XtermUrlCheck,setXtermUrlCheck] = useState<boolean>(true);//true-get false-post
const xtemrConnectUrl = useGetXtermUrl(accessToken,refreshToken,problemSolvedCheck?.read().exists,ModalCheck,XtermUrlCheck)
return (
<div>
<Xterm url={url} query={query}/>
</div>
<Suspense fallback={<Loding/>}>
{problemSolvedCheck?.read().exists&&ModalCheck?
<>
<div className="w-screen h-96"></div>
<XtermModal setXtermUrlCheck={setXtermUrlCheck} setModalState={setModalCheck}/>
</>
:
<XtermUrlProvider xtemrConnectUrl={xtemrConnectUrl}/>
}
</Suspense>
)
}


export default XtermBox
export default XtermBox


/*
Xterm에 먼저 주면 안된다..
problemSolvedCheck가
false면 get으로 주기
ture면 modal을 이용해서 주기
*/
25 changes: 25 additions & 0 deletions src/components/xterm/XtermCheckProvider.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
"use client"

import React,{Suspense} from "react";

import useCheckProblemSolved from "@/hooks/useCheckProblemSolved";

import XtermBox from "./XtermBox";
import Loding from "@/components/loading/Loading";

interface XtermCheckProviderType {
accessToken:string|undefined,
refreshToken:string|undefined
}

const XtermCheckProvider:React.FC<XtermCheckProviderType> = ({accessToken,refreshToken}) => {
const problemSolvedCheck = useCheckProblemSolved(accessToken, refreshToken)
return (
<Suspense fallback={<Loding/>}>
<XtermBox problemSolvedCheck={problemSolvedCheck} accessToken={accessToken} refreshToken={refreshToken}/>
</Suspense>
)
}


export default XtermCheckProvider
4 changes: 2 additions & 2 deletions src/components/xterm/XtermContainer.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from "react";

import XtermQuestion from "./XtermQuestion";
import XtermBox from "./XtermBox";
import XtermCheckProvider from "./XtermCheckProvider";

import { cookies } from "next/headers";

Expand All @@ -12,7 +12,7 @@ const XtermContainer = () => {
return (
<main>
<XtermQuestion/>
<XtermBox
<XtermCheckProvider
accessToken={POL_ACCESS_TOKEN}
refreshToken={POL_REFRESH_TOKEN}
/>
Expand Down
33 changes: 33 additions & 0 deletions src/components/xterm/XtermModal.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import React, { SetStateAction } from "react";


interface XternModalType {
setModalState:React.Dispatch<SetStateAction<boolean>>
setXtermUrlCheck:React.Dispatch<SetStateAction<boolean>>
}


const XtermModal:React.FC<XternModalType> = ({setModalState,setXtermUrlCheck}) => {
return (
<div className="flex items-center justify-center fixed z-50 w-full h-full p-4 bg-OpaqueBackground-color md:inset-0">
<div className="absolute max-w-md max-h-full bg-white rounded-lg shadow">
<div className="flex items-center justify-between p-4 md:p-5 border-b rounded-t dark:border-gray-600">
<h3 className="text-xl font-medium text-gray-900 dark:text-white">
문제를 푼 흔적이 있습니다!
</h3>
</div>
<div className="p-4 md:p-5 space-y-4">
<p className="text-center leading-relaxed text-gray-500 dark:text-gray-400">
문제를 이어서 풀 경우 <br/> 터미널을 불러와 일정 시간 소요됩니다!
</p>
</div>
<div className="flex items-center justify-center p-4 md:p-5 border-t border-gray-200 rounded-b dark:border-gray-600">
<button onClick={(e)=>{setModalState(false)}} className="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">새로 문제 풀기</button>
<button onClick={(e)=>{setXtermUrlCheck(false); setModalState(false)}} className="text-white ms-3 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">이어서 문제 풀기</button>
</div>
</div>
</div>
)
}

export default XtermModal
Loading