Skip to content

[FEAT] 저장 조회 화면 api 연결#115

Merged
Nico1eKim merged 9 commits intoTHIP-TextHip:developfrom
Nico1eKim:feat/#113-save
Aug 20, 2025
Merged

[FEAT] 저장 조회 화면 api 연결#115
Nico1eKim merged 9 commits intoTHIP-TextHip:developfrom
Nico1eKim:feat/#113-save

Conversation

@Nico1eKim
Copy link
Member

@Nico1eKim Nico1eKim commented Aug 20, 2025

➕ 이슈 링크


🔎 작업 내용

  • 저장 조회 화면 api 연결했습니다
  • 그 외 자잘한 QA 사항들 수정했습니다

📸 스크린샷


😢 해결하지 못한 과제

  • [] TASK


📢 리뷰어들에게

  • 참고해야 할 사항들을 적어주세요

Summary by CodeRabbit

  • 신규 기능

    • 마이페이지 저장 탭이 서버 기반으로 저장된 피드·도서를 불러오고 갱신합니다.
    • 피드 좋아요/저장 토글 시 목록 상태가 즉시 반영됩니다.
    • 그룹룸 화면 상단바 오른쪽 아이콘이 표시되어 추가 동작을 제공합니다.
  • UI

    • 그룹룸 모집/추천 섹션 및 검색 결과 리스트에 하단/수평 패딩을 추가해 가독성을 개선했습니다.
    • 작은 룸 카드의 그림자(입체감)를 기본값으로 조정했습니다.
    • 상단바 아이콘의 클릭 반응을 간결화했습니다(리플 제거).
    • 로그인 화면 레이아웃을 하향 배치해 시각적 균형을 개선했습니다.

@coderabbitai
Copy link

coderabbitai bot commented Aug 20, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

저장한 책/피드 조회 기능을 위한 모델·서비스·레포지토리·뷰모델·화면 연동을 추가/개편했다. MyPage 저장 화면을 Hilt 기반으로 교체하고 탭 전환 시 저장 데이터 로드가 이루어지도록 했다. 이외 여러 UI 패딩/레이아웃 및 AppBar 상호작용(IconButton→Icon+clickable) 변경과 일부 프로젝트 설정 파일이 수정되었다.

Changes

Cohort / File(s) Summary
Git/IDE 설정
/.gitignore, .idea/appInsightsSettings.xml, .idea/misc.xml
.gitignore 패턴 조정 및 AppInsights 설정 값 추가, misc.xml 헤더 제거(형식).
데이터 모델(저장 책)
app/.../data/model/book/response/BookUserSaveResponse.kt
저장 책 응답 모델 BookUserSaveResponse/BookUserSaveList 신규 추가(@serializable).
서비스(API)
app/.../data/service/BookService.kt, app/.../data/service/FeedService.kt
GET books/saved, GET feeds/saved(cursor) 엔드포인트 추가.
레포지토리
app/.../data/repository/BookRepository.kt, app/.../data/repository/FeedRepository.kt
getSavedBooks(), getSavedFeeds(cursor) 추가. 공통 응답 처리 흐름에 연결.
뷰모델(Mypage 저장)
app/.../ui/mypage/viewmodel/SavedBookViewModel.kt, app/.../ui/mypage/viewmodel/SavedFeedViewModel.kt
Hilt DI 도입, 저장 목록 로딩 메서드 추가, 저장/좋아요 토글을 레포지토리 호출로 변경, 상태를 StateFlow로 노출. 목 데이터 및 Empty* 뷰모델 제거.
MyPage 저장 화면/네비게이션
app/.../ui/mypage/screen/MypageSaveScreen.kt, app/.../ui/navigator/navigations/MyPageNavigation.kt
SavedScreen→MypageSaveScreen로 개편(Hilt 사용). 탭 변경 시 loadSavedFeeds/Books() 호출. 내비게이션 참조 갱신.
MyPage 컴포넌트
app/.../ui/mypage/component/BookContent.kt, app/.../ui/mypage/component/FeedContent.kt, app/.../ui/mypage/component/SavedFeedCard.kt, app/.../ui/mypage/mock/BookItem.kt
LazyColumn 하단 contentPadding 추가, SavedFeedCard 패딩 조정, BookItem에 isbn 필드 추가, onBookmarkClick 파라미터를 isbn으로 변경, 이미지 URL 전달 수정.
AppBar 컴포넌트
app/.../ui/common/topappbar/DefaultTopAppBar.kt, app/.../ui/common/topappbar/GradationTopAppBar.kt
IconButton 제거 후 Icon+clickable로 교체(리플 제거). GradationTopAppBar에 isRightIconVisible 파라미터 추가.
그룹/검색 UI 조정
app/.../ui/group/room/screen/GroupRoomRecruitScreen.kt, app/.../ui/group/room/screen/GroupRoomScreen.kt, app/.../ui/group/search/component/GroupFilteredSearchResult.kt, app/.../ui/group/search/component/GroupLiveSearchResult.kt, app/.../ui/common/cards/CardItemRoomSmall.kt
패딩 배치 정리, 추천 섹션 간격/여백 조정, 상단바 우측 아이콘 표시, 카드 elevation 기본값 사용.
로그인 화면 레이아웃
app/.../ui/signin/screen/LoginScreen.kt
세로 중앙 정렬 제거, 상단 Spacer(300dp) 추가.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor U as User
  participant S as MypageSaveScreen
  participant VMF as SavedFeedViewModel
  participant VMB as SavedBookViewModel
  participant RF as FeedRepository
  participant RB as BookRepository
  participant SF as FeedService
  participant SB as BookService
  Note over S: 탭 전환 시 데이터 로드
  U->>S: 탭 선택(피드/책)
  alt 피드 탭
    S->>VMF: loadSavedFeeds()
    VMF->>RF: getSavedFeeds(cursor?)
    RF->>SF: GET /feeds/saved
    SF-->>RF: BaseResponse<AllFeedResponse>
    RF-->>VMF: Result<AllFeedResponse?>
    VMF-->>S: feeds StateFlow 업데이트
  else 책 탭
    S->>VMB: loadSavedBooks()
    VMB->>RB: getSavedBooks()
    RB->>SB: GET /books/saved
    SB-->>RB: BaseResponse<BookUserSaveResponse>
    RB-->>VMB: Result<BookUserSaveResponse?>
    VMB-->>S: books StateFlow 업데이트
  end
Loading
sequenceDiagram
  autonumber
  actor U as User
  participant S as MypageSaveScreen
  participant VMF as SavedFeedViewModel
  participant VMB as SavedBookViewModel
  participant RF as FeedRepository
  participant RB as BookRepository
  Note over S: 액션 버튼
  U->>S: 북마크 토글(피드)
  S->>VMF: toggleBookmark(feedId)
  VMF->>RF: changeFeedSave(feedId)
  RF-->>VMF: Result
  VMF-->>S: 리스트에서 제거(미저장)

  U->>S: 북마크 토글(책)
  S->>VMB: toggleBookmark(isbn)
  VMB->>RB: saveBook(isbn, type=false)
  RB-->>VMB: Result
  VMB->>VMB: loadSavedBooks() 재호출
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Assessment against linked issues

Objective Addressed Explanation
저장 조회 API 연동: 저장한 피드 목록 조회 (#113)
저장 조회 API 연동: 저장한 책 목록 조회 (#113)
책 저장 액션 처리 연결 (#113) saveBook 호출은 존재하나 신규 API 추가/명세 변경 여부는 본 PR에서 확인 불가.
피드 저장 액션 처리 연결 (#113) changeFeedSave 사용은 보이나 엔드포인트 추가/변경 여부는 본 PR 범위 외.

Assessment against linked issues: Out-of-scope changes

Code Change Explanation
AppBar 상호작용 방식 변경(IconButton→Icon+clickable, 리플 제거) (app/.../ui/common/topappbar/DefaultTopAppBar.kt, .../GradationTopAppBar.kt) 저장 조회 API 연동과 직접 관련 없음.
로그인 화면 레이아웃 변경(상단 Spacer 300dp 추가) (app/.../ui/signin/screen/LoginScreen.kt) 저장 기능과 무관한 UI 배치 변경.
그룹/검색 화면 패딩·여백 정리 및 카드 elevation 변경 (app/.../ui/group/..., .../CardItemRoomSmall.kt) 저장 조회와 직접적 연관 없음.
IDE/프로젝트 설정 수정(.gitignore, .idea/*) 기능 요구사항과 무관한 환경 설정 변경.

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 details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 08e1ac0 and b2cf32b.

📒 Files selected for processing (24)
  • .gitignore (1 hunks)
  • .idea/appInsightsSettings.xml (1 hunks)
  • .idea/misc.xml (0 hunks)
  • app/src/main/java/com/texthip/thip/data/model/book/response/BookUserSaveResponse.kt (1 hunks)
  • app/src/main/java/com/texthip/thip/data/repository/BookRepository.kt (3 hunks)
  • app/src/main/java/com/texthip/thip/data/repository/FeedRepository.kt (1 hunks)
  • app/src/main/java/com/texthip/thip/data/service/BookService.kt (2 hunks)
  • app/src/main/java/com/texthip/thip/data/service/FeedService.kt (1 hunks)
  • app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt (0 hunks)
  • app/src/main/java/com/texthip/thip/ui/common/topappbar/DefaultTopAppBar.kt (3 hunks)
  • app/src/main/java/com/texthip/thip/ui/common/topappbar/GradationTopAppBar.kt (5 hunks)
  • app/src/main/java/com/texthip/thip/ui/group/room/screen/GroupRoomRecruitScreen.kt (8 hunks)
  • app/src/main/java/com/texthip/thip/ui/group/room/screen/GroupRoomScreen.kt (1 hunks)
  • app/src/main/java/com/texthip/thip/ui/group/search/component/GroupFilteredSearchResult.kt (4 hunks)
  • app/src/main/java/com/texthip/thip/ui/group/search/component/GroupLiveSearchResult.kt (3 hunks)
  • app/src/main/java/com/texthip/thip/ui/mypage/component/BookContent.kt (3 hunks)
  • app/src/main/java/com/texthip/thip/ui/mypage/component/FeedContent.kt (2 hunks)
  • app/src/main/java/com/texthip/thip/ui/mypage/component/SavedFeedCard.kt (2 hunks)
  • app/src/main/java/com/texthip/thip/ui/mypage/mock/BookItem.kt (1 hunks)
  • app/src/main/java/com/texthip/thip/ui/mypage/screen/MypageSaveScreen.kt (7 hunks)
  • app/src/main/java/com/texthip/thip/ui/mypage/viewmodel/SavedBookViewModel.kt (1 hunks)
  • app/src/main/java/com/texthip/thip/ui/mypage/viewmodel/SavedFeedViewModel.kt (1 hunks)
  • app/src/main/java/com/texthip/thip/ui/navigator/navigations/MyPageNavigation.kt (2 hunks)
  • app/src/main/java/com/texthip/thip/ui/signin/screen/LoginScreen.kt (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@Nico1eKim Nico1eKim merged commit 9611777 into THIP-TextHip:develop Aug 20, 2025
1 check was pending
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 저장 조회 api 연결 [(THIP2025-312)]

1 participant