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

[NDD-353] QuestionSelectionBox 문제 해결 (0.5h / 1h) #182

Merged
merged 11 commits into from
Dec 7, 2023

Conversation

milk717
Copy link
Collaborator

@milk717 milk717 commented Dec 7, 2023

NDD-353 Powered by Pull Request Badge

Why

QuestionSelectionBox에 몇가지 문제가 있어서 해결했습니다.

How

  • 비회원이 문제집을 삭제할 때는 로컬 문제집이 삭제되도록 구현
  • 토글에서 라벨과 체크박스가 연결되지 않은 문제 해결

@milk717 milk717 added FE 프론트엔드 코드 변경사항 bug 버그 수정사항이 생긴 경우 labels Dec 7, 2023
@milk717 milk717 self-assigned this Dec 7, 2023
Copy link

cloudflare-workers-and-pages bot commented Dec 7, 2023

Deploying with  Cloudflare Pages  Cloudflare Pages

Latest commit: e100e0c
Status: ✅  Deploy successful!
Preview URL: https://527a8983.gomterview.pages.dev
Branch Preview URL: https://feature-ndd-353.gomterview.pages.dev

View logs

Copy link
Collaborator

@adultlee adultlee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Comment on lines +47 to +53
useEffect(() => {
if (!workbookInfo) return;

setSelectedCategoryIndex(findCategoryIndex(workbookInfo.categoryId));
setIsPublic(workbookInfo.isPublic);
}, [findCategoryIndex, isWorkbookFetching, workbookInfo]);

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[p-5] TODO: useEffect 필요 없는 부분은 제거 시키기... 너무 햇갈려요 어떤건 props 어떤건 useEffect등등

@adultlee adultlee merged commit 25eed0b into dev Dec 7, 2023
2 checks passed
adultlee added a commit that referenced this pull request Dec 7, 2023
* Hotfix/be (#145)

* refactor: Controller DTO 형태 수정

* refactor: 빈 문자열로 문제집의 내용 저장 가능하게 수정

* refactor: 빈 문자열로 문제집의 내용 저장 가능하게 수정

* refactor: 응답에 맞게 dto, 수정 및 테스트에 적용

* test: 테스트 수정

* Hotfix/be (#146)

* fix: dto의 content를 blob에서 toString()으로 처리

* fix: controller에서 querystring 파라미터명 수정

* test: 테스트에 수정사항 적용

* fix: 적용

* [NDD-332]: 게시물 수정시에 공개여부 설정 기능 추가 && 조회시 공개여부를 통한 필터링 추가 (1h / 1h) (#148)

* feat: 문제집 entity에 isPublic 컬럼 추가

* feat: 문제집 여러 건 조회시엔 공개여부를 통해 검증한 데이터만을 조회하게 쿼리 추가

* refactor: WorkbookResponse에서 content가 null이면 ''로 반환하게 수정

* refactor: repository에서 orWhere -> andWhere로 수정

* feat: Response에서 받아서 Request에 적용하기 위해 isPublic추가

* feat: Workbook 생성시에도 isPublic을 입력받아 추가하게 기능 구현

* [NDD-321]: Workbook예외 핸들링 커스터마이징 (0.5h / 1h) (#150)

* feat: 에러메시지를 상태코드/메시지가 아닌, 에러메시지/커스텀에러코드의 구조로 반환하게 기능 구현

* feat: 토큰이 뚫렸을 때에 대한 커스텀 에러코드 추가

* feat: 커스텀 에러를 바로 처리하는 클래스 생성

* refactor: HttpCustomException을 통한 문제집 생성로직의 에러핸들링 리펙토링

* chore: 문제집 단건 조회시 예외처리를 HttpCustomException으로 수정

* chore: 문제집 수정시에 생기는 이슈를 HttpCustomException으로 핸들링

* refactor: 매직넘버 constant로 분리

* fix: 상수 입력 수정

* [NDD-322]: Question 엔드포인트의 예외 HttpCustomException으로 수정 (0.5h / 1h) (#151)

* chore: 질문 생성 로직에서 검증로직을 validator의 로직으로 수정

* feat: 문제집을 id로 조회할 때 없다면 HttpCustomException으로 처리하게 기능 구현

* chore: QuestionNotFoundException을 HttpCustomNotFoundException을 상속받아 구현되게 수정

* chore: 함수 순서 변경

* fix: 토큰이 뚫림을 멘션하지 않게 수정

* [NDD-233]: Pre-Signed URL 발급 API AWS SDK v3로 마이그레이션 (4h / 2h) (#152)

* chore: aws sdk를 v2에서 v3로 변경하기 위한 의존성 수정

* refactor: IDrive에 사용하는 aws sdk를 v3로 마이그레이션하기 위한 IDrive config 파일 수정

* refactor: IDrive에 사용하는 aws sdk를 v3로 마이그레이션하기 위한 S3Client, PutCommandObject 생성 util 메서드

* refactor: IDrive에 사용하는 aws sdk를 v3로 마이그레이션 후 서비스 로직 변경

* test: aws sdk v3로 마이그레이션 함에 따른 테스트 코드 변경

* [NDD-298]: 비디오, 회원 API 에러 케이스 Swagger 작성 (1h / 1h) (#154)

* feat: JWT 토큰이 만료되었을 때의 GONE 상태의 커스텀 Exception 추가

* refactor: GONE 상태의 커스텀 Exception을 상속한 TokenExpiredException이 사용되도록 변경

* feat: 유효하지 않은 JWT 토큰으로 요청하였을 때 Unauthorized 상태의 커스텀 Exception 추가

* docs: member controller swagger 문서에 custom exception 추가

* feat: 비디오 API 관련 Custom Exception 구현

* docs: video controller swagger 문서에 custom exception 추가

* docs: swagger 문서에 같은 상태 코드로 겹치게 되면 하나만 표시되는 현상을 방지하기 위해 코드 수정

* [NDD-323]: 스웨거 예외 문서처리 && Answer와 Auth API에 대한 에러코드 추가 && delete /question에서 Param수정 (1h / 1h) (#155)

* refactor: 질문삭제로직 queryString -> param으로 수정

* refactor: Answer 로직에 대한 예외에 에러코드 추가

* refactor: auth api에서 존재하는 에러케이스에 errorCode 추가

* feat: Workbook 컨트롤러에 예외에 대한 스웨거 문서화 데코레이터 추가

* feat: Question 컨트롤러에 예외에 대한 스웨거 문서화 데코레이터 추가

* feat: Answer 컨트롤러에 예외에 대한 스웨거 문서화 데코레이터 추가

* feat: 머지 후 토큰예외 에러코드 통일

* test: 통합테스트의 delete /question/경로 수정

* docs: 스웨거 중복되는 상태코드에 대한 에러코드 문자열 하나로 병합

* [NDD-335] 문제집 페이지에서 All 탭이 없는 이슈 해결 (0.5h / 0.5h) (#147)

* fix: CategoryMenu 텝에서 All 상태를 사용할 수 있는 Tab 기능 적용

* fix:  BE 팀의 의견을 반영하여 category 응답의 빈문자열 filter를 위해 string 타입 적용

* chore: 빈문자열의 경우 처리할 수 있는 msw 데이터 추가

* chore: 텝에 따른 전환이 아닌 categoryId 만을 선택하기에 정확한 의미 부여를 위해 변수명을 변경

* [NDD-156] babel-webpack 책임분리를 위해서 중복되는 기능 분리 [0.5h/0.5h] (#149)

* refactor: babel-webpack 책임분리를 위해서 중복되는 기능 분리

* chore: 단일 프로젝트에서 적용하기 위해 babelrc 사용

* [NDD-258] useModal 훅 추가 (8h/8h) (#138)

* feat: useModal 훅 추가

* feat: useModal 훅 추가

* fix: 모달 여러개가 띄워졌을 때 배경 스크롤 문제 해결

- 기존: 모달 하나만 닫혀도 배경 스크롤이 가능
- 수정: 모달이 모두 닫혀야 배경 스크롤 가능

* [NDD-276] 면접 세트 삭제, 면접 세트에서 문제 삭제 기능 구현 (6h/2h) (#153)

* fix: entity 이름 변경 후 import 경로 문제 해결

* refactor: QuestionSelectionBox의 헤더 컴포넌트 분리

* design: 메뉴 토글 버튼 추가

* feat: Menu foundation 컴포넌트 생성

* feat: 면접 세트 삭제 기능 추가

* feat: 특정 컴포넌트의 외부가 클릭되었는지 확인하는 훅 추가

menu 바깥 영역 클릭시 메뉴 닫기 위해 생성

* refactor: 모달 열고 닫는 코드 inline으로 변경

* feat: Menu에 오버레이 넣어서 외부 영역 클릭시 닫히도록 구현

* feat: 문제집 삭제시 첫 번째 탭으로 이동하도록 구현

* refactor: 탭 인덱스 초기값 뿐만 아니라 현재 값도 설정할 수 있도록 변경

문제집 삭제시 초기 탭으로 이동하기 위해서
외부에서 탭 인덱스를 변경해도 탭이 전환될 수 있도록 변경

* feat: 메뉴 아이템 클릭시 메뉴 닫히도록 구현

* feat: 면접 질문 수정 버튼 클릭시 체크박스 모드 켜기

* feat: 선택 모드에 대한 상태를 나타내는 다이얼로그 생성

* feat: 질문 삭제 api 추가

* feat: 질문 선택해서 삭제 가능

* chore: 개발용으로 상수 변경했던 것 복구

* refactor: Menu 컴포넌트 Props 타입 변경 후 MenuItem 스타일 변경

* feat: 선택된 질문 삭제시 전역 상태에서 제거

* fix: eslint 오류 수정

* fix: 선택된 문제 삭제시 문제 설정 상태 true가 되는 문제 수정

* [NDD-324]: Workbook API에 대한 불필요한 쿼리문을 위한 최적화 && 인덱스 등록 (1h / 1h) (#157)

* feat: 추가적인 fixture 생성

* feat: insert, join없는 단일select 리포지토리 기능 구현

* feat: 비즈니스 로직에서 리포지토리의 불필요한 쿼리를 쓰지 않기 위한 기능 구현

문제집 생성시에 save대신에 insert를 사용한다.
반환값은 id만 있기 때문에, insert의 결과로 오는 insertResult에서 id만을 꺼내 반환한다.
Workbook을 다시 조회하기 위한 select가 나오지 않는다.

삭제기능에서 Workbook객체를 조회할 때에는 Member에 eager추가 후 workbook을 단순조회하게 기능 구현

* feat: 컨트롤러에서 비즈니스로직 추가 기능의 id만을 캡슐화하게 기능 구현

* feat: 문제집 객체에서 리포지토리 로직을 위한 인덱싱 데코레이터 등록

* style: 리포지토리 조회로직을 한 군데에 모음

* feat: 인덱스 최종 등록

* [NDD-337]: 면접용 닉네임 반환 API Controller 테스트 (1h / 1h) (#159)

* test: 면접 화면 표출용 닉네임 반환 API Controller 단위 테스트

* test: 면접 화면 표출용 닉네임 반환 API Service 단위 테스트

* refactor: 커스텀 에러 코드 두자리를 가지도록 변경

* [NDD-313] tooltip 컴포넌트 생성 (1h/2h) (#156)

* feat: tooltip 컴포넌트 생성

* fix: css 선택자가 제대로 지정되지 않는 현상 해결

- overflow 대응은 불가능

* design: tooltip 배경 색상 변경

* design: fadeIn 애니메이션 추가

* [NDD-339]: Member Service API 테스트 (1h / 1h) (#160)

* test: Member Service 단위 테스트

* test: MemberService 통합 테스트

* [NDD-326]: Question API 리포지토리 로직 수정 && 인덱싱 확인 (1h / 1h) (#162)

* feat: 질문 저장시에 save -> insert로 저장전 select 쿼리 제거

* feat: 쿼리 수정에 따른 비즈니스 로직 구현

* [NDD-328]: Answer API 쿼리 기능 개선 && 인덱싱 추가 (1h / 1h) (#164)

* feat: 저장시에 select-insert의 save대신 insert-return의 로직으로 구현

* feat: save 대신에 select한 후이기 때문에 update를 하도록 기능 수정

* feat: 대표답변 추가시에 문제집 존재여부 검증 기능 추가

* feat: 답변 리스트를 조회할 때 질문에 대한 쿼리문을 줄이도록 기능 구현 && 질문 예외 케이스 추가

* [NDD-330]: 테스트 커버리지 측정 && 누락된 테스트 전체적으로 추가 (2h / 1h) (#165)

* chore: 사용되지 않는 로직 제거

* chore: 사용되지 않는 로직 제거

* test: 불필요 로직 제거 && 모든 로직에 대한 테스트 커버리지를 위한 추가 테스트 구현

* chore: 카테고리 모듈에서 불필요하게 존재하는 코드 제거

* test: 카테고리의 비즈니스 로직 테스트 추가

* test: 안쓰는 fixture 제거 && 카테고리 컨트롤러 테스트 추가

* test: 질문 복제에 대한 컨트롤러 테스트 구현

* test: 질문 복제에 대한 컨트롤러 테스트 구현

* test: 이미 복사된 질문을 복사할 때에 대한 테스트 추가

* test: QuestionResponse.of에서 대표응답이 있을 때에도 정확하게 dto변환이 되는지 검증되도록 테스트 추가

* docs: 테스트할 필요가 없는 로직들을 ignorePatterns로 추가

* docs: OAuth2로직을 테스트하지 않게 문서 추가

* chore: 안쓰는 로직 제거'

* feat: WorkbookResponse에서 문제집 설명이 null일 때 빈 문자열로 파싱함을 확인하는 로직 추가

* test: 비디오 생성시에 썸네일이 없으면 기본 썸네일로 반환하는 것을 검증하는 테스트 추가

* [NDD-331]: 비디오/회원 API 쿼리 최적화 (3h / 3h) (#166)

* feat: video URL에 인덱싱

* refactor: DB의 id의 형과 똑같이 맞춰 자체적으로 형변환하는 오버헤드를 줄이도록 코드 변경

* [NDD-338] lint-staged추가 (1h/2h) (#158)

* chore: lint-stage 추가

* chore: husky 추가

* chore: 권한 및 초기 세팅 명령어 추가

* [NDD-344] MSW 에러 모킹하기, 더미데이터 json으로 변경 (2h/3h) (#169)

* refactor: MSW 데이터를 json 데이터로 변경

* refactor: MSW 에러 시나리오 분리

* feat: 쿼리스트링으로 에러 시나리오를 결정할 수 있도록 변경

* feat: T01, T02 에러 목업 완료

* feat: V01 에러 목업 완료

* feat: V02 에러 목업 완료

* feat: V03 에러 목업 완료

* feat: V04 에러 목업 완료

* feat: 비디오 에러 목업 완료

* feat: 멤버 에러 목업 완료

* feat: 서버 에러 목업 완료

* feat: W01 에러 목업 완료

* feat: W02 에러 목업 완료

* feat: W03 에러 목업 완료

* feat: M01 에러 목업 완료

* chore: import와 이름 복붙 수정

* feat: Q01 에러 목업 완료

* feat: Q02 에러 목업 완료

* feat: A01ˆ 에러 목업 완료

* feat: A02 에러 목업 완료

* feat: C02 에러 목업 완료

* feat: 에러 목업 시나리오 모두 연결

* fix: 잘못 쓰여저있는 쿼리 경로 수정

* [NDD-309] 목소리 사운드 바 기능 추가 (4h/3h) (#161)

* feat: microphone의 volume을 통제 할 수 있는 util 함수 구현

* feat: useMedia hook 에서 인자로 받아 VolumeStatus 컴포넌트 구현

1. createMicrophoneAudioController 적용을 통해서 해당 컴포넌트 "내부"에서만 mic 요소 연결
2. useMedia hook 을 통해서 해당 요소에 media 속성 연결
3. 2번을 수행하고 나니 불필요하게 useMedia를 통해서 두번 요청하는것이 아닌가...? 라는 생각이 들어서 media에 대한 전역상태를 선언하는것이 필요할것이란 생각이 들었음, 이번엔 적용하지 않지만 꼭 진행할 예정
4. UI 상 우리의 테마 컬러에 따라서 동적으로 div 태그의 높이를 조절하도록 구현 + (색)

* feat: Header 내부에서 volume에 대한 적용 완료

* chore: audioMonitor의 주석 추가

* [NDD-264] 카메라가 꺼짐에 대한 리로딩 기능이 추가 되어야함(3h/3h) (#168)

* feat: common에 Mirror 컴포넌트 추가

* fix: 기존에 사용중이던 Mirror 컴포넌트 제거

* feat: reload svg 추가

* feat: Media 컴포넌트 적용

* feat: interview 페이지 내부에서 media dependency 문제 해결

* feat: setting 페이지에서 dependency 문제 해결

* fix: 기존의 사용하지 않던 기능 제거

* fix: InterviewMain 에서 import 문제 해결

* feat: getMedia 에서의 error 처리를 모달로 변경하기 위해 반환값 수정

* fix: InterviewSetting 페이지에서 import 문제 해결

* feat: media hook 내부에서 useModal 을 통해 alert을 대체

* [NDD-307] 비회원도 문제집을 추가, 수정, 삭제. 문제집 내부의 문제도 추가, 삭제하도록 기능 구현 (5h/5h) (#167)

* rename: interviewset -> workbook 으로 모두 이름 변경

* refactor: 문제집 추가 모달을 useModal 방식으로 변경

눈물나게 아름다워요....

* feat: 로그인 유무에 따라 서버와 state에 문제집을 생성하는 훅 구현

* refactor: WorkbookPlusButton에서도 useModal 사용

* fix: 오타 수정

* feat: 비회원도 문제집을 추가할 수 있도록 구현

* feat: 비회원이 로컬에 추가한 문제집에 대해서는 수정시 쿼리 요청 안하도록 enable 속성 추가

* refactor: 가독성을 위해 훅 순서 약간 변경

* refactor: 문제집 추가 로직과 통일을 위해 수정 로직 파라미터 변경

* refactor: 불필요한 return문 제거

* feat: 로그인 유무에 따라 문제집 수정하는 useWorkbookEdit 훅 생성

* feat: 문제집 수정 모달에 useWorkbookEdit 훅 연결

* rename: category -> workbook 으로 쿼리키 이름 변경

아직도 이전 기획의 잔재가 남아있네요

* feat: 로그인 여부에 따라서 문제집 문제 삭제하는 useWorkbookQuestionDelete 훅 생성

* chore: 일관성을 위해 updater의 매개변수 이름 변경

* feat: useWorkbookQuestionDelete 연결

* refactor: QuestionAccordionList 컴포넌트 분리

질문 삭제 체크박스와 다이얼로그가 추가되면서 컴포넌트가 너무 거대해져서 분리

* chore: 개발용으로 수정했던 코드들 복구

* rename: props 타입 이름도 interviewset -> workbook으로 변경

* rename: 컴포넌트 이름 변경된 것 import도 수정

* [NDD-263] 마이페이지에서 권한 없는 영상 조회시 무한로딩 문제 해결 (3h/2h) (#163)

* feat: 인터뷰 페이지 헤더 공통 헤더로 교체

* refactor: 헤더 position fixed -> sticky로 변경

* design: 비디오 플레이어 페이지 레이아웃 변경

* feat: 비공개 비디오 페이지에 Suspense 적용

* fix: error element에서 statusText 없어도 런타임 에러 안나도록 처리

* design: centerlayout 높이수정

* chore: react-error-boundary 종속성 추가

* feat: 로더 뿐만 아니라 페이지 에러도 받을 수 있도록 ErrorPage 수정

* feat: 비디오 정보 조회시 401이나 404 응답에서는 재요청 안하도록 수정

* feat: 비디오 정보 불러오기 오류시 에러 페이지로 이동

* refactor: 헤더에 Menu fondation 컴포넌트 적용

* refactor: 헤더 반응형을 media query로 변경

* fix: 헤더 backdrop 문제 해결

* refactor: 헤더가 sticky로 변경됨에 따라 페이지 높이도 수정

* [NDD-341]: 인코딩부터 클라우드 저장후 테이블에 스키마 추가까지 기능 구현 (3h / 3h) (#170)

* build: multer 라이브러리 추가

* build: fluent-ffmpeg 라이브러리 추가

* feat: 요청받은 영상을 서버에 저장하는 기능 구현

* build: types/fluent-ffmpeg라이브러리 추가

* feat: 비디오를 입력받았을 때 인코딩해 mp4파일로 생성하는 기능 구현

* feat: 인코딩해 영상을 저장하는 로직을 util로 분리 -> 해당 로직이 리포지토리나 비즈니스 로직의 레이어에 의존되지 않는다.

* feat: 썸네일과 mp4인코딩 동시 진행 및 종료시점에서 webm파일을 삭제하는 로직으로 유틸함수 구현

* feat: 비디오 인코딩 비즈니스 로직 구현

* feat: 컨트롤러에 인코딩 api 추가 && 옵션은 util로 분리

* feat: 비동기적 처리에서 순차적으로 행동을 처리하게 util의 Promise처리

* feat: 비디오와 썸네일을 클라우드 스토리지에 업로드하는 기능 구현

* build: S3에서 업로딩 파일의 content-type을 수정하기 위한 라이브러리 등록

* feat: 비디오 업로딩 기능 구현

* feat: 비디오 업로딩 비즈니스 로직 구현

* feat: form-data에서 읽을 때 모두 String, Buffer로 처리되는 것을 감안해 파라미터 타입 변환 && 저장 경로 직접 설정시 해당 경로를 위한 env변수 사용

* feat: 컨트롤러에서 저장 로직 추가

* refactor: 경로 /encode -> /upload로 수정

* fix: 테스트파일 제거

* feat: 전송 후 전송한 mp4/png파일을 삭제하는 기능 구현

* refactor: 질문이 삭제되었을 때, 에러가 아닌 삭제명시를 통한 영상 이름 설정을 하도록 수정

* [NDD-334]: accessToken, refreshToken을 RDB가 아닌 Redis에 저장하도록 변경 (2h / 3h) (#172)

* rename: tokenController를 controller 디렉토리 내부에 위치하도록 변경

* refactor: 상수를 constant/constant.ts로 이동

* feat: 토큰을 RDB에 저장하는 것이 아닌 Redis에 저장하도록 로직 구현

* remove: 사용하지 않는 token repository와 entity 제거

* test: Token Entity 제거로 인한 테스트 코드 변경

* [NDD-347]: accessToken strategy를 사용하는 경우 만료된 토큰에 대한 확인이 불가능한 문제 해결 (3h / 2h) (#176)

* feat: 토큰을 검증하여 검증 실패 시 에러를 throw하고, 성공 시 member 정보를 반환하는 TokenHardGuard 구현

* refactor: TokenHardGuard에서 memberRepository에 대한 의존성을 제거하기 위해 리팩터링

* fix: API 요청 시 토큰이 만료되었거나 유효하지 않거나 하는 경우에도 401 에러로 한 번에 처리하던 문제 해결

* fix: tokenService를 주입받지 못하는 문제 해결

* style: lint 적용

* [NDD-312] Toast 개발 완료 (10h / 8h) (#171)

* feat: 토스트 상태 관리를 위한 EventManger 추가

* feat: 토스트 틀 구현 완료

* design: 토스트 타입별 아이콘 추가

* fix: autoClose 옵션 꺼져있을 때 호버 이벤트시 토스트 바로 종료되는 문제 수정

* feat: 토스트 위치 지정 기능 추가

* fix: autoClose 타입 변경

autoClose 속성이 true이면 토스트가 바로 사라지는 문제 발생

* remove: 토스트 업데이트 관련 로직 제거

업데이트는 토스트를 사용해서 promise 등의 상태를 표시해줄 때 필요함.

추후 이 부분이 기획으로 추가된다면 그 때 개발하기

* feat: collapseToast을 적용해서 토스트가 자연스럽게 사라지도록 구현

* refactor: 애니메이션 끝나는 이벤트 훅으로 분리

* feat: 토스트 프로그래스바 추가

* feat: 마우스 호버시 토스트 타이머 멈춤

* refactor: useToastContainer 훅 분리

* rename: EventManger -> eventMangerˆ

* rename: EventManger -> eventManger 변경 후 import 수정

* rename: Toast -> ToastItem

* refactor: toast.type(text) 형식으로 출력할 수 있게 함수 변경

* design: 토스트 타입에 따라서 다른 프로그래스바 색상 추가

* chore: 토스트 옵션의 타입을 옵셔널로 변경

* refactor: useAnimationEnd 훅 제거하고 컴포넌트에 직접 리스너 달기

react는 바닐라가 아니야!!!

* rename: 핸들러 네이밍 수정

* design: 토스트 애니메이션 조정

* refactor: zIndex 테마로 지정해서 관리 (#173)

* [NDD-340] 탭 컴포넌트 리펙터링, console.log에 뜨는 경고들 해결 (1.5h / 2h) (#175)

* refactor: useTabs 방식으로 탭 컴포넌트 리펙터링

* refactor: QuestionSelectionBox에 리펙터링된 탭 적용

* refactor: 마이페이지 탭에 리펙터링된 탭 적용

* refactor: 카테고리 탭에 리펙터링된 탭 적용

* remove: 이전 탭 컴포넌트 삭제

* rename: 변경된 컴포넌트 이름을 Tabs2 -> Tabs으로 변경하고 import 수정

* fix: nth-child를 nth-of-type으로 변경해서 emotion 경고 제거

* chore: msw 초기화 다시 실행해서 msw 경고 제거

* chore: nth-last-child -> nth-last-of-type 로 변경해서 emotion 에러 제거

* chore: msw에 로그인 여부 선택 추가

* [NDD-351] 문제집 공개 여부 설정 추가 (1h/2h) (#178)

* refactor: ShareRangeSetting을 공통 컴포넌트로 변경하고 ShareRangeToggleProps로 이름변경

* design: ShareRangeToggle 문구와 간격 수정

* feat: 문제집 entity에 isPublic 속성 추가

* fix: 토글에 id를 입력받는 부분이 없어서 중복이 일어나는 문제 해결

* feat: 문제집 추가시 isPublic 속성 추가

* feat: isPublic 속성 추가한 것으로 목 데이터 업데이트

* feat: Toggle의 아이디를 useId를 사용하는 방식으로 변경

* [NDD-308] 문제집에서 문제 선택해서 바로 면접 연습을 시작할 수 있는 기능 개발하기 (5h / 3h) (#177)

* feat: StartWithSelecteQuestions  모달 구현

해당 Modal은 다음과 같은 기능을 포함하고 있습니다.
1. 유저가 setting 페이지의 첫페이지 절차를 포함합니다.
2. 현재 선택된 question에 대해서 전역으로 저장하고 면접을 바로 시작합니다.

* feat: 현재 videoStatus 페이지에서 조건에 따라 이전 버튼의 동작 변경

* fix: export 하지 않았던 컴포넌트 반환

* chore: path 내부 상대 경로로 설정된 interviewSetting path 변경

* feat: 기존 선택 로직을 살리면서 새로운 기능 추가

* fix: addWorkbookList 이후 페이지 이동 구현

* chore: Workbook 으로 모두 폴더명 변경

* feat: workbookDetail 페이지 UI 개선

* fix: state 통일

* fix: reissue에 달려있는 guard로 인해 사용하지 못하는 오류 해결 (#180)

* [NDD-305] 프론트엔드 에러 처리하기 (15h/8h) (#174)

* feat: sentry로 에러 로그를 보내는 util 추가

- 핸들링 가능한 api에러만 추가

* feat: errorboundary추가

- 핸들링 가능한 api와 다른 프론트 예외를 처리하기 위해 2개의 boundary로 나눔
- react-query의 에러를 전역으로 전파하도록 설정
- boundary연결

* remove: 에러 핸들링 중앙 집중화에 따른 불필요한 코드 삭제

* refactor: error를 상위 errorPage로 위임

* feat: error page 분리

* fix: 잘못된 mock 데이터 수정

* fix: token이 없을시 에러 페이지 이동을 막는다

* feat: 환경변수에 의해서 서비스 환경을 결정한다.

* Revert "refactor: error를 상위 errorPage로 위임"

This reverts commit 684253bc2fa9717e4c6f2802283b012103822633.

* fix: loader의 에러처리는 각자가 책임합니다

* fix: local 환경에서만 msw 가 동작하도록 변경

* hotfix: reissue 문제 해결중

* hotfix: 필요없는 구문 제거

---------

Co-authored-by: adultlee <seoungin1228@gmail.com>

* Hotfix/be (#181)

* fix: reissue진행시에 access token에서 410을 반환하는 에러 수정

* fix: isPublic을 수정할 때 적용하도록 기능 수정

* [NDD-353] QuestionSelectionBox 문제 해결 (0.5h / 1h) (#182)

* fix: 워크북 추가시 공개여부 안가는 문제 수정

* feat: 비회원은 로컬에 있는 문제집 삭제

* fix: 라벨과 체크박스가 연결되지 않았던 문제 수정

* feat: 서버에서 내려온 상태가 반영되도록 구현

Suspense에서는 enable 속성을 사용할 수 없어 일단 effect로 처리했습니다.

* chore: 콘솔로그 변경

* design: 공개, 비공개 변경시 모달 크기 변경되는 현상 해결

* design: 체크박스 레이아웃 깨지는 문제 수정

* fix: outsideclick 적용 안되는 문제 해결

* feat: 문제집 디테일 페이지에서 새로운 면접 세트 만들 때도 isPublic 넣기

* feat: 새로문 문제집 추가시 마이페이지로 이동

* feat: 문제집에 따라서 워딩 다르게

---------

Co-authored-by: JangAJang <99702271+JangAJang@users.noreply.github.com>
Co-authored-by: quiet-honey <99426344+quiet-honey@users.noreply.github.com>
Co-authored-by: YoonHaeMin <yunhatmi@gachon.ac.kr>
Co-authored-by: Sumin <57657868+milk717@users.noreply.github.com>
@milk717 milk717 deleted the feature/NDD-353 branch December 12, 2023 13:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 버그 수정사항이 생긴 경우 FE 프론트엔드 코드 변경사항
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants