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

[FE] 새로운 챕터/토픽 생성 #62

Closed
2 tasks done
Tracked by #80
youzysu opened this issue Oct 26, 2023 · 4 comments
Closed
2 tasks done
Tracked by #80

[FE] 새로운 챕터/토픽 생성 #62

youzysu opened this issue Oct 26, 2023 · 4 comments
Assignees
Labels
FE Frontend feat 기능 개발
Milestone

Comments

@youzysu
Copy link
Member

youzysu commented Oct 26, 2023

진행할 작업 설명

책 상세 페이지 - 새로운 챕터/토픽 생성

TO DO

  • Store: chapterList, topicList Atom 생성 및 상태 관리
  • View: 책 상세 페이지 UI
@youzysu youzysu added FE Frontend test labels Oct 26, 2023
@youzysu youzysu self-assigned this Oct 26, 2023
@youzysu youzysu changed the title [FE] 챕터, 토픽 테스트 코드 [FE] 챕터, 토픽 생성/수정/삭제 테스트 코드 Oct 26, 2023
@youzysu youzysu changed the title [FE] 챕터, 토픽 생성/수정/삭제 테스트 코드 [FE] 챕터 & 토픽 생성/수정/삭제 Oct 26, 2023
@youzysu
Copy link
Member Author

youzysu commented Oct 26, 2023

챕터, 토픽 Store Data Structure 고민

  1. Chapter 내부에서 배열로 관리
  • 챕터 안에 토픽이 속하는 개념이기 때문에 type Chapter = Info & { topics: Info[] };으로 타입 정의

문제점

  • 특정 챕터의 특정 토픽의 정보 데이터 업데이트 시 이중 배열 탐색 필요
  • chapterIndex, topicIndex로 탐색해야 함 O(n2)
import { atom, useAtom, useAtomValue, useSetAtom } from "jotai";

export type Info = {
  title: string;
};

export type Chapter = Info & { topics: Info[] };

type ChaptersAtomActionMap = {
  UPDATE_CHAPTER: { chapterIndex: number; info: Info };
  DELETE_CHAPTER: { chapterIndex: number };
  ADD_TOPIC: { chapterIndex: number };
  DELETE_TOPIC: { chapterIndex: number; topicIndex: number };
  UPDATE_TOPIC: { chapterIndex: number; topicIndex: number; info: Info };
};

type ChaptersAtomAction =
  | { type: "ADD_CHAPTER" }
  | {
      [K in keyof ChaptersAtomActionMap]: {
        type: K;
        payload: ChaptersAtomActionMap[K];
      };
    }[keyof ChaptersAtomActionMap];

const chapterListAtom = atom<Chapter[]>([]);

const useChapterListAtom = atom(
  (get) => get(chapterListAtom),
  (_, set, action: ChaptersAtomAction) => {
    switch (action.type) {
      case "ADD_CHAPTER":
        set(chapterListAtom, (prev) => [
          ...prev,
          {
            title: "",
            topics: [],
          },
        ]);
        break;
      case "UPDATE_CHAPTER":
        set(chapterListAtom, (prev) =>
          prev.map((chapter, index) =>
            index === action.payload.chapterIndex
              ? { ...chapter, ...action.payload.info }
              : chapter
          )
        );
        break;
      case "DELETE_CHAPTER":
        set(chapterListAtom, (prev) =>
          prev.filter((_, index) => index !== action.payload.chapterIndex)
        );
        break;
      case "ADD_TOPIC":
        set(chapterListAtom, (prev) => {
          return prev.map((chapter, index) =>
            index === action.payload.chapterIndex
              ? { ...chapter, topics: [...chapter.topics, { title: "" }] }
              : chapter
          );
        });
        break;
      case "DELETE_TOPIC":
        set(chapterListAtom, (prev) =>
          prev.map((chapter, index) =>
            index === action.payload.chapterIndex
              ? {
                  ...chapter,
                  topics: chapter.topics.filter(
                    (_, index) => index !== action.payload.topicIndex
                  ),
                }
              : chapter
          )
        );
        break;
      // TODO: 성능 개선: 어떤 데이터 구조로 관리하는게 좋을지 고민해보기 (챕터와 토픽 아톰을 따로 만들까?)
      case "UPDATE_TOPIC":
        set(chapterListAtom, (prev) =>
          prev.map((chapter, index) =>
            index === action.payload.chapterIndex
              ? {
                  ...chapter,
                  topics: chapter.topics.map((topic, index) =>
                    index === action.payload.topicIndex
                      ? { ...topic, ...action.payload.info }
                      : topic
                  ),
                }
              : chapter
          )
        );
        break;
    }
  }
);

const useChapterListValue = () => useAtomValue(useChapterListAtom);
const useSetChapterList = () => useSetAtom(useChapterListAtom);
const useChapterList = () => useAtom(useChapterListAtom);

export { useChapterList, useChapterListValue, useSetChapterList };

개선 방향

  • Topic Store를 Chapter와 분리
  • Map 자료구조로 type TopicMap = Map<number, Info[]> [chapterIndex: number]: topicInfo 를 맵핑하여 관리하기
  • 문제점: 특정 챕터 삭제 시 해당 챕터 이후로 Map 모두 수정해줘야 함 (어차피 배열도 내부적으로는 index 변경해줘야 하니까 성능 상으로는 유사할 것 같다.)
  • 관련 소스코드: useTopicList, useChapterList

추가 개선점

  • 챕터와 토픽 중복 로직을 어떻게 개선할까?
  • 위의 방법이 최선일까?

@youzysu youzysu added the feat 기능 개발 label Oct 26, 2023
@youzysu youzysu changed the title [FE] 챕터 & 토픽 생성/수정/삭제 [FE] 책 상세 - 챕터 & 토픽 생성/수정/삭제 Oct 27, 2023
@youzysu youzysu added this to the Sprint #03 milestone Oct 27, 2023
@youzysu youzysu changed the title [FE] 책 상세 - 챕터 & 토픽 생성/수정/삭제 [FE] 책 상세 - 새로운 챕터/토픽 추가 Oct 30, 2023
@youzysu youzysu changed the title [FE] 책 상세 - 새로운 챕터/토픽 추가 [FE] 책 상세 페이지 - 새로운 챕터/토픽 추가 Oct 30, 2023
@youzysu youzysu changed the title [FE] 책 상세 페이지 - 새로운 챕터/토픽 추가 [FE] 책 상세 페이지 - 챕터/토픽 생성, 수정, 삭제 Oct 30, 2023
@youzysu youzysu modified the milestones: Sprint #03, Sprint #04 Oct 30, 2023
@youzysu
Copy link
Member Author

youzysu commented Oct 30, 2023

새로운 챕터 등록 UI 고민

  1. 새로운 페이지로 라우팅 처리
  • WHY? 새로운 책 추가 완료 후 바로 챕터 페이지로 이동하도록 플로우 처리하기 위함
  • Panel 기본 tab index를 전체 챕터 목록 조회로
  1. 모달: 책 추가 이후 유저가 바로 챕터를 추가하고 싶지 않은데 모달로 Blocking하면 불편할 듯 함 -> 그럼 챕터 추가 페이지로 라우팅하는 것도 마찬가지 아닌가? -> 그래도 blocking 느낌은 덜할듯
  2. Filter Panel
  • 기존 챕터 조회 Tab 목록에 챕터 추가 탭을 추가하는건 나머지는 목록 조회인데 한탭만 추가인 점이 어색해보임
  • Tabs에 포함은 되는데 스타일을 커스텀하게 분리해서 적용하면?
  • 책 추가와 동일한 Page UI 흐름으로 FAB로 추가하되, Panel UI 사용하면? MUI 에러 (Tab UI에는 반영하고 싶지 않음)
    image
    ✔️ 4. BookChapters에 ViewerMode 상태로 조건부 렌더링하기

@youzysu
Copy link
Member Author

youzysu commented Oct 30, 2023

책 상세 페이지 의존성 개선 필요

  • navigate state로 페이지 간에 data를 넘기는 방식을 어떻게 개선해야 할까?
  • 왜 state로 data를 넘겨주고 있는가? 책 챕터 조회 페이지에서 /main/chapters/:bookId Header에서 책 이름과 북클럽 정보를 보여주기 위해서, Header는 상위 Layout 컴포넌트에서 렌더링해주고 있어 Location을 사용하는 방법을 선택
  • 개선 필요성: 복잡해지면 디버깅이 어려워질 것 같다.

@youzysu youzysu changed the title [FE] 책 상세 페이지 - 챕터/토픽 생성, 수정, 삭제 [FE] 책 상세 페이지 - 새로운 챕터/토픽 생성 Oct 30, 2023
@youzysu
Copy link
Member Author

youzysu commented Oct 30, 2023

Library 페이지 트러블 슈팅 기록

youzysu added a commit that referenced this issue Oct 30, 2023
- Layout Header에 책 이름 표기를 위해 routing 시 Location state 객체 활용
@youzysu youzysu changed the title [FE] 책 상세 페이지 - 새로운 챕터/토픽 생성 [FE] 새로운 챕터/토픽 생성 Oct 30, 2023
@youzysu youzysu mentioned this issue Oct 30, 2023
3 tasks
@youzysu youzysu removed the test label Oct 30, 2023
@youzysu youzysu closed this as completed Oct 30, 2023
youzysu added a commit that referenced this issue Nov 1, 2023
* feat: 책 챕터 페이지 헤더 영역 UI #62

- Layout Header에 책 이름 표기를 위해 routing 시 Location state 객체 활용

* feat: 새로운 챕터/토픽 생성 #62

* refactor #79: 코드 리뷰 반영

- isViewerMode 상태 초기값 ! 연산자 적용

* fix #79: MUI 컴포넌트 import path 수정

- styled_default error 해결
youzysu added a commit that referenced this issue Nov 3, 2023
* build: 3주차 배포 빌드 에러 해결

* chore: gitignore fe 파일 삭제

* chore: react-query 등 패키지 의존성 버전 업데이트

* hotfix: 책 검색 시 검색어 없는 경우 요청 보내는 버그 해결

* refactor #78: 인증 토큰 보안 강화

- accessToken 저장 위치 localStorage에서 메모리로 변경

* [FE] �책 상세 페이지 새로운 챕터/토픽 추가 (#79)

* feat: 책 챕터 페이지 헤더 영역 UI #62

- Layout Header에 책 이름 표기를 위해 routing 시 Location state 객체 활용

* feat: 새로운 챕터/토픽 생성 #62

* refactor #79: 코드 리뷰 반영

- isViewerMode 상태 초기값 ! 연산자 적용

* fix #79: MUI 컴포넌트 import path 수정

- styled_default error 해결

* [FE] 북클럽 멤버 초대 및 참여 기능 (#89)

* feat: 북클럽 초대 기능 #60

- 북클럽 초대 링크 멤버 추가한 이메일로 전송
- useInput hook 구현: 이메일 입력값 검증
- useEmail hook 구현: emailjs 라이브러리 추가

* UI: 기타 스타일 수정 #60

* feat #60: 이메일 전송 실패 시 에러 핸들링

- useSendEmail hook 수정

* feat #60: 북클럽 참여 기능

* refactor, UI: 리팩토링 및 기본 UI 구현

- themeMode 유지 기능
- 404 페이지 디자인

* [FE] 북클럽 상세 정보 조회 (#94)

* rename: 북클럽 초대 코드 변수명 변경사항 반영

* feat: 북클럽 상세 정보 조회 #90

- 북클럽 책 목록 조회를 위해 멤버 책 목록 조회 API 수정 사항 반영
- 북클럽 상세 정보 API 설계 및 조회 기능 구현
- 새로운 모임 추가 모달 기본 UI 구현

* UI: 새로운 챕터 추가 버튼 위치 변경
youzysu added a commit that referenced this issue May 5, 2024
* build: 3주차 배포 빌드 에러 해결

* chore: gitignore fe 파일 삭제

* chore: react-query 등 패키지 의존성 버전 업데이트

* hotfix: 책 검색 시 검색어 없는 경우 요청 보내는 버그 해결

* refactor #78: 인증 토큰 보안 강화

- accessToken 저장 위치 localStorage에서 메모리로 변경

* [FE] �책 상세 페이지 새로운 챕터/토픽 추가 (#79)

* feat: 책 챕터 페이지 헤더 영역 UI #62

- Layout Header에 책 이름 표기를 위해 routing 시 Location state 객체 활용

* feat: 새로운 챕터/토픽 생성 #62

* refactor #79: 코드 리뷰 반영

- isViewerMode 상태 초기값 ! 연산자 적용

* fix #79: MUI 컴포넌트 import path 수정

- styled_default error 해결

* [FE] 북클럽 멤버 초대 및 참여 기능 (#89)

* feat: 북클럽 초대 기능 #60

- 북클럽 초대 링크 멤버 추가한 이메일로 전송
- useInput hook 구현: 이메일 입력값 검증
- useEmail hook 구현: emailjs 라이브러리 추가

* UI: 기타 스타일 수정 #60

* feat #60: 이메일 전송 실패 시 에러 핸들링

- useSendEmail hook 수정

* feat #60: 북클럽 참여 기능

* refactor, UI: 리팩토링 및 기본 UI 구현

- themeMode 유지 기능
- 404 페이지 디자인

* [FE] 북클럽 상세 정보 조회 (#94)

* rename: 북클럽 초대 코드 변수명 변경사항 반영

* feat: 북클럽 상세 정보 조회 #90

- 북클럽 책 목록 조회를 위해 멤버 책 목록 조회 API 수정 사항 반영
- 북클럽 상세 정보 API 설계 및 조회 기능 구현
- 새로운 모임 추가 모달 기본 UI 구현

* UI: 새로운 챕터 추가 버튼 위치 변경

* [FE] 북클럽 새로운 모임 생성 기능 (#101)

* feat #90: 북클럽 상세 정보 조회

* feat #90: 북클럽 상세 페이지 새로운 모임 추가 기능

- 모임 추가 모달 구현
- 북클럽 도서 목록 조회 무한 스크롤 적용

* UI #90: 재사용 가능한 컴포넌트 common 분리 및 적용

* feat #90: 새로운 책 추가 페이지에서 모임 추가 단계 추가

* [FE] 챕터 페이지, 토픽 페이지, 토큰 관리 방식 개선 (#118)

* feat #81: 챕터 목록 조회 기능, 페이지 레이아웃, API 설계, 디자인

* UI: 서재 페이지 책 목록 조회 레이아웃 수정

* UI: Sidebar active 상태 수정, 개발 중인 페이지 안내

* refactor #78: refreshToken 보안 관련 수정 사항 반영

- refreshToken 저장 위치 쿠키로 변경
- 토큰 재발급 요청 반영
- 로그아웃 기능 반영

* refactor #78: accessToken 만료 에러 코드 반영

* feat #81: 책 상세 페이지 챕터 목록 조회

* feat #81: 챕터 목록 조회 시 책 정보 및 책 상태 표시

- TODO: 책 상태 변경 요청

* fix: MUI import bundle 에러 해결을 위해 default import 방식으로 변경

* feat #81: 책 상태 변경 기능

* feat #102: 토픽 페이지 레이아웃, 토픽 조회, 챕터 상태 변경 기능

* feat #102: 챕터 제목 수정, 책/챕터 상태 변경 사항 반영

- patch로 수정 요청 통일

* feat #102: 토픽 타이틀 수정, 디렉터리 구조 수정

* feat #102: 챕터 토픽 상태 관리

- 챕터 토픽 상태 관리 방식 변경
- 토픽 제목 수정 이후 토픽 목록 재요청하도록 수정

* refactor: cookie refresh token 없으면 토큰 재발급 요청 안하도록 개선

* feat #102: 토픽 페이지 레이아웃, 북마크/댓글 조회 기능, 북마크/댓글 UI 구현

* feat #102: 새로운 북마크, 북마크 댓글 컴포넌트 그룹핑

* fix: 토큰 재발급 요청이 성공했을 때만 기존 요청 다시 이뤄지도록 수정

- 비로그인 유저에게 권한이 필요한 기능 노출하지 않도록 수정

* fix: mui components import 방식 반영

- vite 업데이트 이후 에러 해결 확인

* chore: vite 업데이트에 따른 의존성 업데이트 반영

- 기타 빌드 에러 수정

* fix: 개발 환경에서 쿠키 저장 안되는 문제 해결

- withCredentials 옵션 추가 설정

* [FE] 북마크/댓글 생성, 수정, 삭제 (#131)

* feat #125: MYSIWYG 에디터 UI, 북마크 & 댓글 상태 관리 Context 생성

* feat #125: 북마크 추가 기능

* feat #125: 새로운 북마크 댓글 추가 기능

* feat #125: 북마크 내용 수정 기능

- context로 전역 상태 관리

* feat #125: CommentContent Viewer, Editor 컴포넌트로 분리 및 상태 분리

* feat #125: 북마크 페이지 수정 기능

* feat #125: 댓글 수정 기능

* style: 오타 수정

* refactor #125: 새로운 북마크, 댓글 중복 로직 제거 및 불필요한 Context 삭제

* refactor #125: 데이터 요청 책임 부모 컴포넌트로 이동 및 불필요한 타입 삭제

* refactor #125: 북마크, 댓글 컴포넌트 간 중복 제거

- CommentTextArea -> Comment로 합치기

* feat #125: 북마크, 댓글 삭제 기능

* chore: 불필요한 의존성 제거

* feat #133: 북마크/댓글 리액션 조회, 추가, 삭제 기능

* refactor: StatusChip 컴포넌트 리팩토링

- onClick optional 로 props 변경
youzysu added a commit that referenced this issue May 5, 2024
* build: 3주차 배포 빌드 에러 해결

* chore: gitignore fe 파일 삭제

* chore: react-query 등 패키지 의존성 버전 업데이트

* hotfix: 책 검색 시 검색어 없는 경우 요청 보내는 버그 해결

* refactor #78: 인증 토큰 보안 강화

- accessToken 저장 위치 localStorage에서 메모리로 변경

* [FE] �책 상세 페이지 새로운 챕터/토픽 추가 (#79)

* feat: 책 챕터 페이지 헤더 영역 UI #62

- Layout Header에 책 이름 표기를 위해 routing 시 Location state 객체 활용

* feat: 새로운 챕터/토픽 생성 #62

* refactor #79: 코드 리뷰 반영

- isViewerMode 상태 초기값 ! 연산자 적용

* fix #79: MUI 컴포넌트 import path 수정

- styled_default error 해결

* [FE] 북클럽 멤버 초대 및 참여 기능 (#89)

* feat: 북클럽 초대 기능 #60

- 북클럽 초대 링크 멤버 추가한 이메일로 전송
- useInput hook 구현: 이메일 입력값 검증
- useEmail hook 구현: emailjs 라이브러리 추가

* UI: 기타 스타일 수정 #60

* feat #60: 이메일 전송 실패 시 에러 핸들링

- useSendEmail hook 수정

* feat #60: 북클럽 참여 기능

* refactor, UI: 리팩토링 및 기본 UI 구현

- themeMode 유지 기능
- 404 페이지 디자인

* [FE] 북클럽 상세 정보 조회 (#94)

* rename: 북클럽 초대 코드 변수명 변경사항 반영

* feat: 북클럽 상세 정보 조회 #90

- 북클럽 책 목록 조회를 위해 멤버 책 목록 조회 API 수정 사항 반영
- 북클럽 상세 정보 API 설계 및 조회 기능 구현
- 새로운 모임 추가 모달 기본 UI 구현

* UI: 새로운 챕터 추가 버튼 위치 변경

* [FE] 북클럽 새로운 모임 생성 기능 (#101)

* feat #90: 북클럽 상세 정보 조회

* feat #90: 북클럽 상세 페이지 새로운 모임 추가 기능

- 모임 추가 모달 구현
- 북클럽 도서 목록 조회 무한 스크롤 적용

* UI #90: 재사용 가능한 컴포넌트 common 분리 및 적용

* feat #90: 새로운 책 추가 페이지에서 모임 추가 단계 추가

* [FE] 챕터 페이지, 토픽 페이지, 토큰 관리 방식 개선 (#118)

* feat #81: 챕터 목록 조회 기능, 페이지 레이아웃, API 설계, 디자인

* UI: 서재 페이지 책 목록 조회 레이아웃 수정

* UI: Sidebar active 상태 수정, 개발 중인 페이지 안내

* refactor #78: refreshToken 보안 관련 수정 사항 반영

- refreshToken 저장 위치 쿠키로 변경
- 토큰 재발급 요청 반영
- 로그아웃 기능 반영

* refactor #78: accessToken 만료 에러 코드 반영

* feat #81: 책 상세 페이지 챕터 목록 조회

* feat #81: 챕터 목록 조회 시 책 정보 및 책 상태 표시

- TODO: 책 상태 변경 요청

* fix: MUI import bundle 에러 해결을 위해 default import 방식으로 변경

* feat #81: 책 상태 변경 기능

* feat #102: 토픽 페이지 레이아웃, 토픽 조회, 챕터 상태 변경 기능

* feat #102: 챕터 제목 수정, 책/챕터 상태 변경 사항 반영

- patch로 수정 요청 통일

* feat #102: 토픽 타이틀 수정, 디렉터리 구조 수정

* feat #102: 챕터 토픽 상태 관리

- 챕터 토픽 상태 관리 방식 변경
- 토픽 제목 수정 이후 토픽 목록 재요청하도록 수정

* refactor: cookie refresh token 없으면 토큰 재발급 요청 안하도록 개선

* feat #102: 토픽 페이지 레이아웃, 북마크/댓글 조회 기능, 북마크/댓글 UI 구현

* feat #102: 새로운 북마크, 북마크 댓글 컴포넌트 그룹핑

* fix: 토큰 재발급 요청이 성공했을 때만 기존 요청 다시 이뤄지도록 수정

- 비로그인 유저에게 권한이 필요한 기능 노출하지 않도록 수정

* fix: mui components import 방식 반영

- vite 업데이트 이후 에러 해결 확인

* chore: vite 업데이트에 따른 의존성 업데이트 반영

- 기타 빌드 에러 수정

* fix: 개발 환경에서 쿠키 저장 안되는 문제 해결

- withCredentials 옵션 추가 설정

* feat #125: MYSIWYG 에디터 UI, 북마크 & 댓글 상태 관리 Context 생성

* feat #125: 북마크 추가 기능

* feat #125: 새로운 북마크 댓글 추가 기능

* feat #125: 북마크 내용 수정 기능

- context로 전역 상태 관리

* feat #125: CommentContent Viewer, Editor 컴포넌트로 분리 및 상태 분리

* feat #125: 북마크 페이지 수정 기능

* feat #125: 댓글 수정 기능

* style: 오타 수정

* refactor #125: 새로운 북마크, 댓글 중복 로직 제거 및 불필요한 Context 삭제

* refactor #125: 데이터 요청 책임 부모 컴포넌트로 이동 및 불필요한 타입 삭제

* refactor #125: 북마크, 댓글 컴포넌트 간 중복 제거

- CommentTextArea -> Comment로 합치기

* feat #125: 북마크, 댓글 삭제 기능
youzysu added a commit that referenced this issue May 5, 2024
* build: 3주차 배포 빌드 에러 해결

* chore: gitignore fe 파일 삭제

* chore: react-query 등 패키지 의존성 버전 업데이트

* hotfix: 책 검색 시 검색어 없는 경우 요청 보내는 버그 해결

* refactor #78: 인증 토큰 보안 강화

- accessToken 저장 위치 localStorage에서 메모리로 변경

* [FE] �책 상세 페이지 새로운 챕터/토픽 추가 (#79)

* feat: 책 챕터 페이지 헤더 영역 UI #62

- Layout Header에 책 이름 표기를 위해 routing 시 Location state 객체 활용

* feat: 새로운 챕터/토픽 생성 #62

* refactor #79: 코드 리뷰 반영

- isViewerMode 상태 초기값 ! 연산자 적용

* fix #79: MUI 컴포넌트 import path 수정

- styled_default error 해결

* [FE] 북클럽 멤버 초대 및 참여 기능 (#89)

* feat: 북클럽 초대 기능 #60

- 북클럽 초대 링크 멤버 추가한 이메일로 전송
- useInput hook 구현: 이메일 입력값 검증
- useEmail hook 구현: emailjs 라이브러리 추가

* UI: 기타 스타일 수정 #60

* feat #60: 이메일 전송 실패 시 에러 핸들링

- useSendEmail hook 수정

* feat #60: 북클럽 참여 기능

* refactor, UI: 리팩토링 및 기본 UI 구현

- themeMode 유지 기능
- 404 페이지 디자인

* [FE] 북클럽 상세 정보 조회 (#94)

* rename: 북클럽 초대 코드 변수명 변경사항 반영

* feat: 북클럽 상세 정보 조회 #90

- 북클럽 책 목록 조회를 위해 멤버 책 목록 조회 API 수정 사항 반영
- 북클럽 상세 정보 API 설계 및 조회 기능 구현
- 새로운 모임 추가 모달 기본 UI 구현

* UI: 새로운 챕터 추가 버튼 위치 변경

* [FE] 북클럽 새로운 모임 생성 기능 (#101)

* feat #90: 북클럽 상세 정보 조회

* feat #90: 북클럽 상세 페이지 새로운 모임 추가 기능

- 모임 추가 모달 구현
- 북클럽 도서 목록 조회 무한 스크롤 적용

* UI #90: 재사용 가능한 컴포넌트 common 분리 및 적용

* feat #90: 새로운 책 추가 페이지에서 모임 추가 단계 추가

* [FE] 챕터 페이지, 토픽 페이지, 토큰 관리 방식 개선 (#118)

* feat #81: 챕터 목록 조회 기능, 페이지 레이아웃, API 설계, 디자인

* UI: 서재 페이지 책 목록 조회 레이아웃 수정

* UI: Sidebar active 상태 수정, 개발 중인 페이지 안내

* refactor #78: refreshToken 보안 관련 수정 사항 반영

- refreshToken 저장 위치 쿠키로 변경
- 토큰 재발급 요청 반영
- 로그아웃 기능 반영

* refactor #78: accessToken 만료 에러 코드 반영

* feat #81: 책 상세 페이지 챕터 목록 조회

* feat #81: 챕터 목록 조회 시 책 정보 및 책 상태 표시

- TODO: 책 상태 변경 요청

* fix: MUI import bundle 에러 해결을 위해 default import 방식으로 변경

* feat #81: 책 상태 변경 기능

* feat #102: 토픽 페이지 레이아웃, 토픽 조회, 챕터 상태 변경 기능

* feat #102: 챕터 제목 수정, 책/챕터 상태 변경 사항 반영

- patch로 수정 요청 통일

* feat #102: 토픽 타이틀 수정, 디렉터리 구조 수정

* feat #102: 챕터 토픽 상태 관리

- 챕터 토픽 상태 관리 방식 변경
- 토픽 제목 수정 이후 토픽 목록 재요청하도록 수정

* refactor: cookie refresh token 없으면 토큰 재발급 요청 안하도록 개선

* feat #102: 토픽 페이지 레이아웃, 북마크/댓글 조회 기능, 북마크/댓글 UI 구현

* feat #102: 새로운 북마크, 북마크 댓글 컴포넌트 그룹핑

* fix: 토큰 재발급 요청이 성공했을 때만 기존 요청 다시 이뤄지도록 수정

- 비로그인 유저에게 권한이 필요한 기능 노출하지 않도록 수정

* fix: mui components import 방식 반영

- vite 업데이트 이후 에러 해결 확인

* chore: vite 업데이트에 따른 의존성 업데이트 반영

- 기타 빌드 에러 수정

* fix: 개발 환경에서 쿠키 저장 안되는 문제 해결

- withCredentials 옵션 추가 설정

* [FE] 북마크/댓글 생성, 수정, 삭제 (#131)

* feat #125: MYSIWYG 에디터 UI, 북마크 & 댓글 상태 관리 Context 생성

* feat #125: 북마크 추가 기능

* feat #125: 새로운 북마크 댓글 추가 기능

* feat #125: 북마크 내용 수정 기능

- context로 전역 상태 관리

* feat #125: CommentContent Viewer, Editor 컴포넌트로 분리 및 상태 분리

* feat #125: 북마크 페이지 수정 기능

* feat #125: 댓글 수정 기능

* style: 오타 수정

* refactor #125: 새로운 북마크, 댓글 중복 로직 제거 및 불필요한 Context 삭제

* refactor #125: 데이터 요청 책임 부모 컴포넌트로 이동 및 불필요한 타입 삭제

* refactor #125: 북마크, 댓글 컴포넌트 간 중복 제거

- CommentTextArea -> Comment로 합치기

* feat #125: 북마크, 댓글 삭제 기능

* chore: 불필요한 의존성 제거

* feat #133: 북마크/댓글 리액션 조회, 추가, 삭제 기능

* refactor: StatusChip 컴포넌트 리팩토링

- onClick optional 로 props 변경

* fix: 컨플릭 에러 해결 & 리액션 조회 에러 해결
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FE Frontend feat 기능 개발
Projects
None yet
Development

No branches or pull requests

1 participant