forked from codesquad-members-2023/bookkbookk-team-07
-
Notifications
You must be signed in to change notification settings - Fork 0
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
Comments
챕터, 토픽 Store Data Structure 고민
문제점
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 }; 개선 방향
추가 개선점
|
새로운 챕터 등록 UI 고민
|
책 상세 페이지 의존성 개선 필요
|
Library 페이지 트러블 슈팅 기록
|
youzysu
added a commit
that referenced
this issue
Oct 30, 2023
- Layout Header에 책 이름 표기를 위해 routing 시 Location state 객체 활용
youzysu
added a commit
that referenced
this issue
Nov 1, 2023
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
진행할 작업 설명
책 상세 페이지 - 새로운 챕터/토픽 생성
TO DO
The text was updated successfully, but these errors were encountered: