Skip to content

feat : 서재에서 컬렉션 작품을 선택하는 기능 구현 - #946

Open
devfeijoa wants to merge 12 commits into
feat/936from
feat/937
Open

feat : 서재에서 컬렉션 작품을 선택하는 기능 구현#946
devfeijoa wants to merge 12 commits into
feat/936from
feat/937

Conversation

@devfeijoa

@devfeijoa devfeijoa commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

📌𝘐𝘴𝘴𝘶𝘦𝘴

📎𝘞𝘰𝘳𝘬 𝘋𝘦𝘴𝘤𝘳𝘪𝘱𝘵𝘪𝘰𝘯

  • 작품 검색 화면에 추가한 작품 개수와 서재에서 추가 진입 영역을 구현했습니다.
  • 기존 서재 필터 상태와 무관하게 전체 작품을 조회하는 Paging 흐름을 추가했습니다.
  • 서재 작품을 컬렉션 전용 UI 모델로 변환해 3열 목록으로 표시했습니다.
  • 작품 썸네일, 제목, 별점, 읽기 상태와 날짜 정보를 표시했습니다.
  • 작품 선택·해제와 선택 여부 체크 표시를 구현했습니다.
  • 선택 작품이 있을 때 상단 추가 버튼을 활성화했습니다.
  • 선택한 작품 ID를 작품 검색 화면으로 전달하고 추가한 작품 개수에 반영했습니다.
  • 다시 서재 화면에 진입할 때 기존 선택 상태를 복원하도록 구현했습니다.
  • 최초 로딩과 다음 페이지 로딩 인디케이터를 적용했습니다.
  • 서재 조회 실패 시 공통 네트워크 오류 화면을 표시하고 novels.retry()로 재시도하도록 연결했습니다.
  • 컬렉션 모듈에 Navigation Compose와 Paging Compose 의존성을 추가했습니다.

검증

  • ./gradlew :feature:collection:compileDebugKotlin ktlintCheck --console=plain
  • 컬렉션 모듈 Debug 컴파일 성공
  • ktlint 성공
  • push 전 전체 단위 테스트 및 앱 Debug 빌드 성공

📷𝘚𝘤𝘳𝘦𝘦𝘯𝘴𝘩𝘰𝘵

Screen_recording_20260819_001738.mp4

💬𝘛𝘰 𝘙𝘦𝘷𝘪𝘦𝘸𝘦𝘳𝘴

  • 필터가 적용되지 않은 서재 작품 조회와 Paging 동작을 확인 부탁드립니다.
  • 작품 선택·해제, 선택 상태 복원 및 검색 화면의 작품 개수 반영 흐름을 확인 부탁드립니다.
  • 실제 작품 검색 API와 검색 결과 선택 기능은 포함하지 않습니다.
  • 서재가 비어 있을 때의 전용 화면 정책은 추후 확정 예정입니다.
  • Base: feat/936
  • Head: feat/937

devfeijoa added 12 commits July 31, 2026 17:26
- `CollectionNovelSelectionInfo.kt`: 추가한 작품 개수 표시 및 '서재에서 추가' 버튼을 포함한 공용 컴포넌트 추가
- `CollectionNovelSearchScreen.kt`: `CollectionNovelSelectionInfo`를 적용하고, 작품 개수에 따른 완료 버튼 활성화 로직 및 서재 선택 화면으로의 내비게이션 연결
- `CollectionNavHost.kt`: 서재 작품 선택 화면을 위한 내비게이션 루트 정의 및 화면 전환 로직 추가
- `build.gradle.kts`: `navigation.compose` 및 `paging.compose` 라이브러리 의존성 추가
- `CollectionLibraryNovelSelectionViewModel.kt`: 서재 작품 목록 페이징 데이터 및 작품 선택 상태 관리를 위한 ViewModel 구현
- `CollectionLibraryNovelSelectionScreen.kt`: `LazyVerticalGrid`를 사용하여 서재 작품 목록을 표시하고 선택할 수 있는 화면 구현 및 `CollectionLibraryNovelSelectionRoute` 추가
- `CollectionNavHost.kt`: `SavedStateHandle`을 사용하여 검색 화면과 서재 선택 화면 간에 선택된 작품 ID 목록(`SELECTED_NOVEL_IDS_KEY`)을 전달 및 공유하는 로직 추가
- `CollectionAppBar.kt`: 액션 라벨 클릭을 위한 `onActionClick` 콜백 추가 및 터치 영역 확장을 위해 `Box`와 `clickable` 적용
- `CollectionLibraryNovelItem.kt`: 아이템의 고정 높이를 `aspectRatio` 기반으로 변경하고, 독서 상태 라벨의 레이아웃 및 패딩 수정
- `CollectionNovelSearchScreen.kt`: `addedNovelCount`를 내부 상태가 아닌 외부 파라미터로 받도록 변경하여 네비게이션 상태와 동기화
- `CollectionLibraryNovelSelectionScreen.kt`: 페이징 데이터의 초기 로딩 상태(`LoadState.Loading`)를 확인하여 `CircularProgressIndicator`를 노출하도록 레이아웃 구조 변경 및 로직 추가
- `CollectionLibraryNovelSelectionScreen.kt`: `LazyVerticalGrid`에 페이징 추가 로딩(`append`) 상태를 확인하여 하단에 `CircularProgressIndicator`를 표시하는 로직 추가
- `CollectionLibraryNovelSelectionScreen.kt`: `novels.loadState.refresh`가 `LoadState.Error`인 경우 노출될 에러 화면(이미지, 안내 문구, 재시도 버튼) 구현
- `CollectionLibraryNovelSelectionScreen.kt`: 에러 화면 내 재시도 버튼 클릭 시 `PagingData`의 `retry()`를 호출하는 로직 추가
- `CollectionLibraryNovelSelectionScreen.kt`: 데이터 추가 로딩(`append`) 중 에러가 발생한 경우에도 에러 UI가 노출되도록 조건식을 수정하고, `when` 문의 가독성 개선을 위해 구조 변경
@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@devfeijoa, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

Limit details: You’ve used all 1 included review currently available under your plan.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9b0b453d-5f19-4005-ba15-c2c4503290a6

📥 Commits

Reviewing files that changed from the base of the PR and between 0596a7f and e9b7e31.

📒 Files selected for processing (13)
  • data/library/src/main/java/com/into/websoso/data/library/LibraryRepository.kt
  • data/library/src/main/java/com/into/websoso/data/library/repository/MyLibraryRepository.kt
  • data/library/src/main/java/com/into/websoso/data/library/repository/UserLibraryRepository.kt
  • feature/collection/build.gradle.kts
  • feature/collection/src/main/java/com/into/websoso/feature/collection/CollectionLibraryNovelSelectionScreen.kt
  • feature/collection/src/main/java/com/into/websoso/feature/collection/CollectionLibraryNovelSelectionViewModel.kt
  • feature/collection/src/main/java/com/into/websoso/feature/collection/CollectionNavHost.kt
  • feature/collection/src/main/java/com/into/websoso/feature/collection/CollectionNovelSearchScreen.kt
  • feature/collection/src/main/java/com/into/websoso/feature/collection/component/CollectionAppBar.kt
  • feature/collection/src/main/java/com/into/websoso/feature/collection/component/CollectionLibraryNovelItem.kt
  • feature/collection/src/main/java/com/into/websoso/feature/collection/component/CollectionNovelSelectionInfo.kt
  • feature/collection/src/main/java/com/into/websoso/feature/collection/mapper/CollectionLibraryNovelMapper.kt
  • feature/collection/src/main/java/com/into/websoso/feature/collection/model/CollectionLibraryNovelUiModel.kt

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.

❤️ Share

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

@devfeijoa
devfeijoa requested a review from Sadturtleman August 18, 2026 15:13
@devfeijoa
devfeijoa marked this pull request as ready for review August 18, 2026 15:13
@github-actions
github-actions Bot requested review from m6z1 and s9hn August 18, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat : 서재에서 컬렉션 작품을 선택하는 기능 구현

1 participant