feat: BookSearchBottomSheet 실제 검색 API 연동#161
Conversation
|
Caution Review failedThe pull request is closed. Walkthrough
Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant BottomSheet as BookSearchBottomSheet
participant Hook as useBookSearch
participant API as getSearchBooks
participant Conv as convertToSearchedBooks
participant State as State/UI
User->>BottomSheet: Type query
BottomSheet->>Hook: setSearchQuery(query)
Hook->>Hook: Debounce timer
Hook->>Hook: performSearch(trimmedQuery)
Hook->>API: fetch results
API-->>Hook: results
Hook->>Conv: convert results
Conv-->>Hook: SearchedBook[]
Hook->>State: update searchResults, loading=false
State-->>BottomSheet: render search mode list
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. 📜 Recent review detailsConfiguration used: CodeRabbit UI 💡 Knowledge Base configuration:
You can enable these sources in your CodeRabbit configuration. 📒 Files selected for processing (2)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
#️⃣ 연관된 이슈
생략
📝 작업 내용
BookSearchBottomSheet 컴포넌트의 검색 기능을 실제 API와 연동하도록 개선했습니다. 기존에는 검색 버튼 클릭 시 단순히 console.log만 출력하고 있었으나, 이제 실제 책 검색 API를 호출하여 검색 결과를 표시합니다.
🕸️ 주요 변경사항
1. 실제 검색 API 연동:
getSearchBooksAPI를 사용하여 실제 책 검색이 가능하도록 구현했습니다. 기존 Search 페이지에서 사용하고 있는 검증된 검색 로직을 참고하여 동일한 API 호출 방식을 적용했습니다.2. 디바운싱 적용: 사용자가 검색어를 입력할 때마다 즉시 API를 호출하지 않고 300ms 지연 후 자동으로 검색하도록 디바운싱을 적용하여 성능을 최적화했습니다. 이를 통해 불필요한 API 호출을 방지하고 사용자 경험을 개선했습니다.
3. 검색 상태 관리 개선: 검색 모드와 저장된 책 탭 모드를 명확히 분리했습니다. 검색어가 있을 때는 검색 결과를 표시하고, 검색어가 없을 때는 기존의 저장된 책/모임 책 탭을 표시하도록 로직을 개선했습니다.
4. 검색 버튼 기능 구현: 기존에 console.log('검색:', searchQuery)만 출력하던
handleSearch함수를 실제 검색을 수행하도록 수정했습니다. 이제 검색 버튼 클릭 시와 Enter 키 입력 시 모두 정상적으로 검색이 동작합니다.5. 타입 안정성 강화:
SearchedBook타입을 추가로 import하고, 검색 결과를Book타입으로 변환하는 함수를 구현하여 기존 BookList 컴포넌트와의 호환성을 유지했습니다.기술적 세부사항
useBookSearch훅에 검색 관련 상태(searchResults,searchTimeoutId) 추가performSearch함수를 통해 실제 API 호출 및 에러 처리 구현handleSearchQueryChange함수에서 디바운싱 로직 구현Summary by CodeRabbit