Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
167 commits
Select commit Hold shift + click to select a range
ade08e1
fix: 유저 아이콘 변경
heeeeyong Oct 13, 2025
062120e
fix: 투표 생성 시 제목 가이드 멘트 수정
heeeeyong Oct 13, 2025
8d5414e
Merge pull request #282 from THIP-TextHip/main
ho0010 Oct 18, 2025
569633a
feat: 피드 추천 영역 구현 - 지금 뜨는 추천 글 섹션 추가
ljh130334 Oct 27, 2025
917e1b6
style: 헤더 섹션 스타일 수정
ljh130334 Oct 27, 2025
a73b81d
feat: Embla Carousel 라이브러리 설치
ljh130334 Oct 27, 2025
0aa0b56
feat: Embla Carousel로 카드 가로 스크롤 구현
ljh130334 Oct 27, 2025
fdff236
style: 공식 인플루언서 색상 변경
ljh130334 Oct 27, 2025
c36bb56
refactor: PostFooter를 하단에 고정
ljh130334 Oct 27, 2025
928fd6d
refactor: 북마크 아이콘 삭제 및 일부 스타일링 수정
ljh130334 Oct 27, 2025
4eb60f4
refactor: 더보기 아이콘 교체
ljh130334 Oct 27, 2025
82319c0
feat: 목업 데이터 수정 및 책 카드 클릭 이벤트 무효화
ljh130334 Oct 27, 2025
5cbfd82
fix: 피드 10개마다 추천 글 섹션이 반복되도록 수정
ljh130334 Oct 27, 2025
194c2e8
Refactor: 섹션마다 다른 데이터 표시 및 목업 데이터 분리
ljh130334 Oct 28, 2025
e67e20f
chore: 일부 주석 제거
ljh130334 Oct 28, 2025
c8ef24e
Merge branch 'develop' of https://github.com/THIP-TextHip/THIP-Web in…
heeeeyong Oct 28, 2025
154caf7
Merge pull request #284 from THIP-TextHip/feat/influencer
ljh130334 Oct 28, 2025
2ffe34a
Merge branch 'develop' of https://github.com/THIP-TextHip/THIP-Web in…
heeeeyong Oct 28, 2025
7b28ca4
feat: AI 독서감상문 생성 버튼 추가
ljh130334 Oct 28, 2025
e97d8a9
feat: ConfirmModal 외부 영역 클릭 시 모달 닫히도록 구현
ljh130334 Oct 28, 2025
2990f48
refactor: AI 독서 감상문 생성 모달에서 취소/확인으로 받도록 프로퍼티 추가
ljh130334 Oct 28, 2025
aadd7d8
feat: AI 독서감상문 로딩 페이지 생성
ljh130334 Oct 28, 2025
694abe7
feat: AI 독서감상문 결과 화면 구현
ljh130334 Oct 28, 2025
b26fef7
chore: 파일명을 AiWrite로 수정
ljh130334 Oct 28, 2025
9e779c9
feat: 클립보드 복사 기능 구현
ljh130334 Oct 28, 2025
58352ae
feat: 뒤로가기 버튼 확인 모달 추가
ljh130334 Oct 28, 2025
390eac5
Merge pull request #286 from THIP-TextHip/feat/aiwriting
ljh130334 Oct 29, 2025
c29e140
feat: AI 독서 감상문 생성 API 연동
ljh130334 Oct 29, 2025
70a645f
feat: AI 이용 횟수 조회 API 연동 및 검증 로직 구현
ljh130334 Oct 29, 2025
9558164
fix: AI 이용 횟수 검증 로직 수정
ljh130334 Oct 29, 2025
f82faca
style: AIWrite 페이지 너비를 다른 페이지들과 동일하게 수정
ljh130334 Oct 29, 2025
d24985d
chore: 주석 수정
ljh130334 Oct 29, 2025
63c2bc6
Merge pull request #288 from THIP-TextHip/feat/api-ai
ljh130334 Oct 30, 2025
162e032
feat: 모임 만들기 책 선택에서 모임 책 탭 제거
ljh130334 Oct 31, 2025
c29acee
feat: 모임 생성 시 책 선택에서 모임 책 탭 숨김 처리
ljh130334 Oct 31, 2025
dedc38f
Merge pull request #291 from THIP-TextHip/qa/jihyeon
ljh130334 Oct 31, 2025
1e3084e
fix: Fragment에 key가 없어서 생기는 오류 해결
ho0010 Nov 2, 2025
03853b1
fix: 완료된 모임방을 내 모임방 옵션으로 변경
ho0010 Nov 2, 2025
967390c
remove: 불필요한 코드 제거
ho0010 Nov 2, 2025
f4eb20b
remove: 중복된 타입 선언
ho0010 Nov 2, 2025
cad5ced
Merge pull request #292 from THIP-TextHip/fix/QA10-3
ho0010 Nov 3, 2025
db251ed
Merge branch 'develop' of https://github.com/THIP-TextHip/THIP-Web in…
heeeeyong Nov 7, 2025
2ad171b
Revert "Merge pull request #284 from THIP-TextHip/feat/influencer"
ljh130334 Nov 11, 2025
0a7c70f
Merge pull request #293 from THIP-TextHip/chore/revert-influencer
heeeeyong Nov 11, 2025
2375b11
Merge branch 'develop' of https://github.com/THIP-TextHip/THIP-Web in…
heeeeyong Nov 11, 2025
f4a52ab
Merge pull request #294 from THIP-TextHip/chore/minor-updates
heeeeyong Nov 11, 2025
a26327e
chore: API 함수 주석 제거로 코드 간결화
ljh130334 Nov 21, 2025
bc051cb
chore: 불필요한 주석 제거
ho0010 Nov 22, 2025
0be3cb7
chore: Components 함수 주석 제거로 코드 간결화
ljh130334 Nov 25, 2025
2bbe02b
chore: Hooks 함수 주석 제거로 코드 간결화
ljh130334 Nov 25, 2025
6fd86e5
chore: Pages 함수 주석 제거로 코드 간결화
ljh130334 Nov 25, 2025
a1ce57e
chore: global 사용 예시 주석 제거
ljh130334 Nov 25, 2025
0c7f553
chore: Types, Utils 함수 주석 제거로 코드 간결화
ljh130334 Nov 25, 2025
c7ef2a7
chore: 불필요한 console.log 제거
ljh130334 Nov 25, 2025
2fb2c6a
chore: 불필요한 주석 및 console.log 메서드 제거
heeeeyong Nov 25, 2025
7b3d12f
Merge pull request #296 from THIP-TextHip/THIP-389
ljh130334 Nov 26, 2025
74f5f44
Merge pull request #297 from THIP-TextHip/THIP-391
ljh130334 Nov 26, 2025
5b6350e
Merge branch 'THIP-386' into THIP-390
ljh130334 Nov 26, 2025
41e1a72
Merge pull request #298 from THIP-TextHip/THIP-390
ljh130334 Nov 26, 2025
e60f9a4
Merge pull request #299 from THIP-TextHip/THIP-386
ljh130334 Nov 27, 2025
2bf7630
THIP-394: 2차 Refactor - 폴더 구조 개선 (#303)
ljh130334 Jan 4, 2026
bc0f732
feat: Skeleton UI 컴포넌트 추가
ljh130334 Feb 5, 2026
cffe6ba
feat: 피드 로딩 시 최소 1초 스켈레톤 표시로 깜빡임 방지
ljh130334 Feb 5, 2026
eea39ab
fix: 모임 검색 로딩 플래시 및 레이아웃 점프 개선
ho0010 Feb 18, 2026
48456d7
fix: 사용자 피드 페이지 진입 시 흰 화면 플래시 제거
ho0010 Feb 19, 2026
b218ce2
fix: 최근 검색어 로딩 전 잘못된 "없어요" 문구 노출 수정
ho0010 Feb 19, 2026
ebdf770
fix: 사용자 검색 초기 로딩 시 "없어요" 문구 노출 수정
ho0010 Feb 19, 2026
f365e03
refactor: 스타일 분리
ljh130334 Feb 19, 2026
7d2a417
Merge pull request #305 from THIP-TextHip/THIP-405
ljh130334 Feb 19, 2026
5f7dc51
feat: MyFeedPage 로딩 시 Skeleton UI 적용 => what
ljh130334 Feb 19, 2026
167e793
feat: 내 피드/다른 피드 스켈레톤 UI 추가 및 프로필 버그 수정
ljh130334 Feb 19, 2026
6328a4a
fix: 사용자 검색 fetchRecentSearches 방어 처리 및 데드 코드 제거
ho0010 Feb 20, 2026
707b560
refactor: 스켈레톤 폴더 구조 개선 및 재사용 컴포넌트 추출 => what
ljh130334 Feb 20, 2026
1c33e62
feat: FeedDetailPage 스켈레톤 UI 적용 => what
ljh130334 Feb 20, 2026
5a29f72
feat: SavePage 탭별 스켈레톤 UI 적용 => what
ljh130334 Feb 20, 2026
c6d54f8
feat: Mypage 프로필 영역 스켈레톤 UI 적용 => what
ljh130334 Feb 20, 2026
8d7054d
fix: 상태 토글 기반 액션의 중복 실행 방지 패턴 도입
heeeeyong Feb 20, 2026
aa60cc2
fix: 상태 토글 기반 액션의 중복 실행 방지 패턴 도입 (댓글 컴포넌트 좋아요 추가)
heeeeyong Feb 20, 2026
70d7776
feat: TodayWords 메시지 목록 스켈레톤 UI 적용 => what
ljh130334 Feb 20, 2026
75e8a03
feat: GroupDetail 선택적 스켈레톤 UI 적용 => what
ljh130334 Feb 20, 2026
d806ae5
feat: ParticipatedGroupDetail 스켈레톤 UI 적용 => what
ljh130334 Feb 20, 2026
2a8b21e
feat: Memory 페이지 스켈레톤 UI 적용 => what
ljh130334 Feb 22, 2026
be4687a
feat: Memory/SearchBook 페이지 스켈레톤 UI 적용 => what
ljh130334 Feb 22, 2026
f88bfc2
feat: Memory/Search/SearchBook 스켈레톤 UI 적용 및 로딩 최적화 => what
ljh130334 Feb 22, 2026
21da851
feat: 검색 결과, 최근 검색어, 인기도서 스켈레톤 UI 추가
ljh130334 Feb 22, 2026
6123bfa
feat: GroupSearch 로딩 시 Skeleton UI 적용 => what
ljh130334 Feb 22, 2026
c60a1fa
feat: GroupMembers 로딩 시 Skeleton UI 적용 => what
ljh130334 Feb 22, 2026
a9fc219
feat: FollowerListPage 로딩 시 Skeleton UI 적용 => what
ljh130334 Feb 22, 2026
9b56f77
fix: AI 독서 감상문 생성 기능 준비중 안내 토스트 추가
ho0010 Feb 24, 2026
3df023d
fix: Skeleton.Text style prop 타입 오류 수정
ljh130334 Feb 24, 2026
62f38b2
fix: MyFeedPage 프로필 API 불일치 수정 => what
ljh130334 Feb 24, 2026
39e30f5
fix: ParticipatedGroupDetail 에러 화면에 뒤로가기 버튼 추가 => what
ljh130334 Feb 24, 2026
cc23912
fix: Memory 로딩 중 탭/필터 클릭으로 인한 Race Condition 방지 => what
ljh130334 Feb 24, 2026
9fad3e5
fix: 미사용 MenuItemSkeleton 제거 및 프로필 이미지 alt 속성 추가 => what
ljh130334 Feb 24, 2026
3e1e159
refactor: GroupDetail BottomButton 상태 로직 가독성 개선
ljh130334 Feb 24, 2026
4883092
refactor: JSX 삼항 조건(A) → early return 패턴(B) 으로 전환 => what
ljh130334 Feb 24, 2026
2b4ab5e
fix: GroupDetail 에러 상태에 뒤로가기 버튼 누락 수정 => what
ljh130334 Feb 24, 2026
0210c8f
fix: 무한스크롤 공통 훅 리팩토링
heeeeyong Feb 24, 2026
c7a9d3d
fix: 댓글 리스트 무한스크롤 적용
heeeeyong Feb 24, 2026
9e017e2
Merge pull request #304 from THIP-TextHip/THIP-406
ho0010 Feb 24, 2026
da96cc4
Merge pull request #309 from THIP-TextHip/fix/ai-function-block
ho0010 Feb 24, 2026
ff01e69
fix: 모임방 > 투표 로직 수정
heeeeyong Feb 24, 2026
43d0090
fix: 타입 안정성 강화
heeeeyong Feb 24, 2026
5ae40a2
fix: 낙관적 업데이트 로직 내 API 요청 지연 제거
heeeeyong Feb 24, 2026
3c00e6f
fix: 띱하기/띱취소 상황에서 유저 피드백 추가
heeeeyong Feb 24, 2026
512fd92
fix: RecordItem 동기화에 가드 추가
heeeeyong Feb 24, 2026
2172fa8
fix: 댓글 좋아요 상태 동기화 처리
heeeeyong Feb 24, 2026
fcb7ec4
fix: 팔로우 상태 동기화 처리
heeeeyong Feb 24, 2026
fa6d152
Merge pull request #307 from THIP-TextHip/THIP-407
heeeeyong Feb 24, 2026
3f42ebb
fix: 댓글 모달 무한스크롤 구현 추가
heeeeyong Feb 24, 2026
96e2d56
fix: css 스타일링 수정
heeeeyong Feb 24, 2026
9f1364a
fix: 공백없는 긴 영문도 줄바꿈 적용
heeeeyong Feb 24, 2026
56a615e
Merge pull request #308 from THIP-TextHip/refactor-skeleton-global
ljh130334 Feb 25, 2026
4a62514
fix: conflict 해결
ljh130334 Feb 25, 2026
eb3d942
feat: 피드 게시물 상세 이동 방식 개선 및 스크롤 위치 복원
ho0010 Feb 25, 2026
16847e7
Merge branch 'refactor' into fix/feed-ux
ho0010 Feb 25, 2026
809b507
refactor(feed): 피드 캐시 로직 훅으로 분리 및 Feed 컴포넌트 코드 정리
ho0010 Feb 25, 2026
ba64e33
fix: import 누락
ho0010 Feb 25, 2026
d041cca
fix: 활성탭 상태 개선
ho0010 Feb 25, 2026
6d67950
fix: 피드 상세 페이지 진입 시 흰 화면 깜빡임 개선
ho0010 Feb 25, 2026
20880cf
fix: 프로필 로드 실패 시 스켈레톤 무한 렌더 버그 수정
ljh130334 Feb 25, 2026
20856eb
fix: API 실패 시에도 최소 로딩 시간(500ms) 보장되도록 수정
ljh130334 Feb 25, 2026
50c5baf
fix: leftArrow 이미지 alt 속성 누락 추가
ljh130334 Feb 25, 2026
d6f6c9e
fix: 검정 배경에서 에러 텍스트 색상 누락으로 안 보이는 버그 수정
ljh130334 Feb 25, 2026
9239963
fix: 전체 페이지 minLoadingTime Promise.all 외부 분리로 최소 로딩 시간 보장
ljh130334 Feb 25, 2026
2c36d4c
fix: 최근 검색어 삭제 콜백 예외 처리 추가
ljh130334 Feb 25, 2026
c9ab5b4
fix: 로딩 중 키보드 인터랙션 차단을 위해 pointerEvents → inert로 교체
ljh130334 Feb 25, 2026
f38029c
fix: 프로필 로드 실패 시 스켈레톤 무한 노출 버그 수정
ljh130334 Feb 25, 2026
01e966e
fix: if(error) 블록 내 도달 불가능한 폴백 문자열 제거
ljh130334 Feb 25, 2026
7b136c3
fix: bookDetail null 시 빈 URL로 TopBackground 렌더링되는 문제 수정
ljh130334 Feb 25, 2026
808ab8c
fix: Skeleton.Text lines <= 0 입력 시 빈 wrapper 렌더링 방어 처리
ljh130334 Feb 25, 2026
3d74900
fix: GroupBookSectionSkeleton 클릭 이벤트 차단을 위해 pointerEvents: none 추가
ljh130334 Feb 25, 2026
9923460
docs: Skeleton README 테이블 전후 빈 줄 추가 (MD058)
ljh130334 Feb 25, 2026
2a3be9f
fix: BookDetailSkeleton 버튼에 disabled 추가로 키보드 포커스 차단
ljh130334 Feb 25, 2026
6663168
Merge pull request #311 from THIP-TextHip/refactor-skeleton
ljh130334 Feb 25, 2026
49e4970
fix: 기록 삭제 시 window.location.reload() → onDelete 콜백으로 교체
ljh130334 Feb 25, 2026
16d7e47
fix: 페이지별 보기 클릭 시 입력창 미표시 버그 수정
ljh130334 Feb 25, 2026
ed74c1e
Merge branch 'refactor' into refactor-infiniteScroll
heeeeyong Feb 25, 2026
8f9b157
Merge pull request #310 from THIP-TextHip/refactor-infiniteScroll
heeeeyong Feb 25, 2026
a6b1182
fix: 머지 충돌 정리(초기 로딩 스켈레톤/무한스크롤 로딩 분리)
heeeeyong Feb 25, 2026
55958d8
fix: 피드 이미지 로딩 최적화 및 FollowerList에 의한 CLS 완화
heeeeyong Feb 25, 2026
c13d29b
Merge branch 'refactor' into fix/feed-ux
ho0010 Feb 26, 2026
f65968e
fix: 머지 충돌
ho0010 Feb 26, 2026
c2e7b8b
fix: refactor 머지 충돌 잔재 제거 및 캐시 쓰기 예외 처리 추가
ho0010 Feb 26, 2026
2e5adf9
fix: 불필요 코드 제거
ho0010 Feb 26, 2026
70bb233
Merge pull request #313 from THIP-TextHip/refactor-record
ljh130334 Feb 26, 2026
87972de
Merge branch 'refactor' into fix/feed-ux
ho0010 Feb 27, 2026
ef8db6c
fix: 병합 충돌 해결
ho0010 Feb 27, 2026
7bbe94e
Merge pull request #312 from THIP-TextHip/fix/feed-ux
ho0010 Feb 27, 2026
698aaa8
Merge branch 'refactor' into refactor-infiniteScroll
heeeeyong Feb 27, 2026
79e2482
fix: LoadingSpinner 중복 import 문제 해결
heeeeyong Feb 27, 2026
acb0847
Merge pull request #314 from THIP-TextHip/refactor-infiniteScroll
heeeeyong Feb 27, 2026
77621ba
Merge branch 'refactor' into refactor-feed-initial-rendering
heeeeyong Feb 27, 2026
75c0c5b
Merge pull request #315 from THIP-TextHip/refactor-feed-initial-rende…
heeeeyong Feb 27, 2026
dc075db
fix: Feed/Memory/GroupSearch 충돌 해결
heeeeyong Feb 28, 2026
8f3d95b
fix: GroupSearch 화면 내 초기 마운트 시, 중복 fetch 문제 해결
heeeeyong Feb 28, 2026
8264cfe
fix: UserSearch 화면에 스켈레톤 UI 적용
heeeeyong Feb 28, 2026
9f45089
Merge pull request #316 from THIP-TextHip/refactor-feed-initial-rende…
heeeeyong Feb 28, 2026
d4e6709
feat: 피드 미리보기 이미지 lazy load 및 blur 적용
heeeeyong Feb 28, 2026
1259a87
fix: 로그인 토큰 교환 race condition 및 화이트스크린 대응
heeeeyong Feb 28, 2026
e707809
fix: SearchBook 페이지 PostHeader의 Props 누락 문제 해결
heeeeyong Feb 28, 2026
64a6adc
Merge pull request #317 from THIP-TextHip/refactor-feed-initial-rende…
heeeeyong Mar 2, 2026
731be17
feat: react-helmet-async 기반 SEO 공통 컴포넌트 설정
ho0010 Mar 4, 2026
8570567
feat: 책 상세 및 독서모임 상세 페이지 SEO 메타태그 적용
ho0010 Mar 4, 2026
5dc7646
feat: SEO 크롤링 인프라 구성
ho0010 Mar 4, 2026
99963c7
Merge pull request #318 from THIP-TextHip/feat/seo-meta-tags
heeeeyong Mar 5, 2026
73785bc
Merge pull request #319 from THIP-TextHip/refactor
ho0010 Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,15 @@
"@emotion/css": "^11.13.5",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.0",
"@tanstack/react-query": "^5.90.21",
"@types/react-datepicker": "^7.0.0",
"axios": "^1.11.0",
"react": "^19.1.0",
"react-cookie": "^8.0.1",
"react-datepicker": "^8.4.0",
"react-dom": "^19.1.0",
"react-ga4": "^2.1.0",
"react-helmet-async": "^3.0.0",
"react-router-dom": "^7.6.0",
"zustand": "^5.0.4"
},
Expand Down
58 changes: 58 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions public/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
User-agent: *
Allow: /search/book/
Allow: /group/detail/
Allow: /feed/
Disallow: /mypage
Disallow: /signup
Disallow: /memory/
Sitemap: https://thip.co.kr/sitemap.xml
15 changes: 15 additions & 0 deletions public/sitemap.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://thip.co.kr/</loc>
<priority>1.0</priority>
</url>
<url>
<loc>https://thip.co.kr/feed</loc>
<priority>0.8</priority>
</url>
<url>
<loc>https://thip.co.kr/group</loc>
<priority>0.8</priority>
</url>
</urlset>
2 changes: 0 additions & 2 deletions src/api/books/getBookDetail.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { apiClient } from '../index';

// 책 상세 정보 타입
export interface BookDetail {
title: string;
imageUrl: string;
Expand All @@ -13,7 +12,6 @@ export interface BookDetail {
isSaved: boolean;
}

// API 응답 타입
export interface BookDetailResponse {
isSuccess: boolean;
code: number;
Expand Down
3 changes: 0 additions & 3 deletions src/api/books/getMostSearchedBooks.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
import { apiClient } from '../index';

// 인기 검색 도서 타입
export interface MostSearchedBook {
rank: number;
title: string;
imageUrl: string;
isbn: string;
}

// API 응답 데이터 타입
export interface MostSearchedBooksData {
bookList: MostSearchedBook[];
}

// API 응답 타입
export interface MostSearchedBooksResponse {
isSuccess: boolean;
code: number;
Expand Down
3 changes: 0 additions & 3 deletions src/api/books/getRecruitingRooms.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { apiClient } from '../index';

// 모집중인 모임방 타입
export interface RecruitingRoom {
roomId: number;
bookImageUrl: string;
Expand All @@ -11,15 +10,13 @@ export interface RecruitingRoom {
isPublic: boolean;
}

// API 응답 데이터 타입
export interface RecruitingRoomsData {
recruitingRoomList: RecruitingRoom[];
totalRoomCount: number;
nextCursor: string;
isLast: boolean;
}

// API 응답 타입
export interface RecruitingRoomsResponse {
isSuccess: boolean;
code: number;
Expand Down
12 changes: 1 addition & 11 deletions src/api/books/getSavedBooksInMy.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { apiClient } from '../index';

// 개인적으로 저장한 책 정보 타입
// 저장한 책 정보 타입
export interface SavedBookInMy {
bookId: number;
bookTitle: string;
Expand All @@ -11,22 +11,19 @@ export interface SavedBookInMy {
isSaved: boolean;
}

// API 응답 데이터 타입
export interface SavedBooksInMyData {
bookList: SavedBookInMy[];
nextCursor: string;
isLast: boolean;
}

// API 응답 타입
export interface SavedBooksInMyResponse {
isSuccess: boolean;
code: number;
message: string;
data: SavedBooksInMyData;
}

// 개인적으로 저장한 책 목록 조회 API 함수 (무한스크롤)
export const getSavedBooksInMy = async (cursor: string | null = null) => {
try {
const params: { cursor?: string | null } = {};
Expand All @@ -43,10 +40,3 @@ export const getSavedBooksInMy = async (cursor: string | null = null) => {
throw error;
}
};

/*
// 사용 예시
const savedBooksInMy = await getSavedBooksInMy();
console.log(savedBooksInMy.data.bookList); // 개인 저장 책 목록
console.log(savedBooksInMy.data.bookList[0].bookTitle); // 첫 번째 책 제목
*/
9 changes: 4 additions & 5 deletions src/api/books/getSearchBooks.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { apiClient } from '../index';

// 검색된 책 타입 (API 응답에서 받는 형태)
export interface BookSearchItem {
title: string;
imageUrl: string;
Expand All @@ -9,7 +8,6 @@ export interface BookSearchItem {
isbn: string;
}

// 검색된 책 타입 (컴포넌트에서 사용하는 형태)
export interface SearchedBook {
id: number;
title: string;
Expand All @@ -19,7 +17,6 @@ export interface SearchedBook {
isbn: string;
}

// API 응답 데이터 타입
export interface SearchBooksData {
searchResult: BookSearchItem[];
page: number;
Expand All @@ -30,7 +27,6 @@ export interface SearchBooksData {
first: boolean;
}

// API 응답 타입
export interface SearchBooksResponse {
isSuccess: boolean;
code: number;
Expand Down Expand Up @@ -58,7 +54,10 @@ export const getSearchBooks = async (
}
};

export const convertToSearchedBooks = (apiBooks: BookSearchItem[], startIndex: number = 0): SearchedBook[] => {
export const convertToSearchedBooks = (
apiBooks: BookSearchItem[],
startIndex: number = 0,
): SearchedBook[] => {
return apiBooks.map((book, index) => ({
id: startIndex + index + 1,
title: book.title,
Expand Down
3 changes: 0 additions & 3 deletions src/api/books/postSaveBook.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
import { apiClient } from '../index';

// 북마크 요청 타입
export interface SaveBookRequest {
type: boolean;
}

// 북마크 응답 데이터 타입
export interface SaveBookData {
isbn: string;
isSaved: boolean;
}

// 북마크 응답 타입
export interface SaveBookResponse {
isSuccess: boolean;
code: number;
Expand Down
12 changes: 1 addition & 11 deletions src/api/feeds/createFeed.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { apiClient } from '../index';

/** 서버에 보낼 request JSON 페이로드 */
export interface CreateFeedBody {
isbn: string;
contentBody: string;
Expand All @@ -9,7 +8,6 @@ export interface CreateFeedBody {
imageUrls?: string[];
}

/** 성공 응답 */
export interface CreateFeedSuccess {
isSuccess: true;
code: number;
Expand All @@ -19,7 +17,6 @@ export interface CreateFeedSuccess {
};
}

/** 실패 응답 */
export interface CreateFeedFail {
isSuccess: false;
code: number;
Expand All @@ -28,14 +25,7 @@ export interface CreateFeedFail {

export type CreateFeedResponse = CreateFeedSuccess | CreateFeedFail;

/**
* 피드 작성 API
* - application/json (presigned URL 방식)
* - imageUrls: 미리 S3에 업로드한 이미지의 CloudFront URL 목록
*/
export const createFeed = async (
body: CreateFeedBody,
): Promise<CreateFeedResponse> => {
export const createFeed = async (body: CreateFeedBody): Promise<CreateFeedResponse> => {
const { data } = await apiClient.post<CreateFeedResponse>('/feeds', body);
return data;
};
Loading