Skip to content

[Feat] ExploreScreen(탐색 화면)#120

Merged
nahy-512 merged 1 commit into
feat/#95-collection-detail-screenfrom
feat/#110-explore-screen
Jan 17, 2026
Merged

[Feat] ExploreScreen(탐색 화면)#120
nahy-512 merged 1 commit into
feat/#95-collection-detail-screenfrom
feat/#110-explore-screen

Conversation

@giovannijunseokim

@giovannijunseokim giovannijunseokim commented Jan 16, 2026

Copy link
Copy Markdown
Contributor

📮 관련 이슈

📌 작업 내용

  • ExploreScreen(탐색 화면)

📸 스크린샷

스크린샷
Screen_recording_20260116_143939.mp4

Summary by CodeRabbit

릴리스 노트

  • 새 기능

    • 컬렉션 저장 관련 새로운 버튼 추가
    • 탐색 화면에 페이지 기반 콘텐츠 네비게이션 구현
    • 콘텐츠 정보에 감독, 북마크 상태, 설명, 스포일러 표시 등 추가 데이터 필드 지원
  • 개선 사항

    • 컬렉션 상세 화면 UI 구조 개선
    • 프로필 이미지 컴포넌트 접근성 개선
    • 디자인 시스템에 새로운 버튼 스타일 추가

✏️ Tip: You can customize this high-level summary in your review settings.

- VerticalPager를 활용한 탐색 화면 레이아웃 구현
- 개별 콘텐츠를 보여주는 ExplorePageItem 컴포넌트 구현 (포스터, 제목, 설명, 이동 버튼)
- 모든 콘텐츠 확인 후 표시되는 ExploreEndPage 컴포넌트 구현
- FlintLogoTopAppbar 및 배경 그라데이션 적용
- 각 컴포넌트 및 전체 화면에 대한 Preview 코드 추가
@giovannijunseokim giovannijunseokim requested a review from a team as a code owner January 16, 2026 05:41
@giovannijunseokim giovannijunseokim changed the title [Feat] ExploreScreen(탐색 화면- [Feat] ExploreScreen(탐색 화면) Jan 16, 2026
@coderabbitai

coderabbitai Bot commented Jan 16, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

Failed to post review comments

📝 Walkthrough

Walkthrough

새로운 컬렉션 저장 관련 Compose UI 컴포넌트(FlintSaveDoneButton, FlintSaveNoneButton)와 디자인 시스템 확장, ContentModel 데이터 모델 확대를 추가합니다. CollectionDetailScreen과 ExploreScreen을 매개변수 기반 구성으로 재구성하였습니다.

Changes

집단 / 파일(들) 변경 요약
버튼 컴포넌트
app/src/main/java/com/flint/core/designsystem/component/button/FlintSaveDoneButton.kt, app/src/main/java/com/flint/core/designsystem/component/button/FlintSaveNoneButton.kt
두 개의 새로운 Compose 버튼 컴포넌트 추가: FlintSaveDoneButton("저장된 컬렉션" 텍스트 표시), FlintSaveNoneButton("컬렉션 저장 +" 텍스트 표시). 둘 다 클릭 콜백, 패딩, 배경색, 테마 스타일 지원.
디자인 시스템 확장
app/src/main/java/com/flint/core/designsystem/theme/Color.kt, app/src/main/java/com/flint/core/designsystem/component/image/ProfileImage.kt
Color.kt에 buttonStroke Brush 속성 추가. ProfileImage에 선택적 contentDescription 매개변수 추가(접근성 개선).
도메인 모델 확장
app/src/main/java/com/flint/domain/model/ContentModel.kt
ContentModel에 5개의 새로운 속성 추가: director, isBookmarked, bookmarkCount, description, isSpoiler (모두 기본값 포함).
화면 구성 재구성
app/src/main/java/com/flint/presentation/collectiondetail/CollectionDetailScreen.kt
매개변수 없는 진입점에서 PaddingValues, 제목, 저자 정보, 북마크 상태, 콘텐츠 목록, 사람 목록을 포함한 매개변수 기반 구성으로 변경. 썸네일, 설명, 콘텐츠, 인물 서브컴포넌트 포함, 하단 시트 및 진행률 추적 추가.
탐색 화면 페이저 구현
app/src/main/java/com/flint/presentation/explore/ExploreScreen.kt
VerticalPager 기반 페이지 네비게이션으로 대폭 재구성. ExplorePageItem(콘텐츠 표시), ExploreEndPage(콘텐츠 종료 상태) 추가. 클릭 핸들러 확장, 그래디언트 배경 조건부 렌더링 구현.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50분

Possibly related PRs

Suggested labels

🧩 Component, Feat ✨, 📱 UI

Suggested reviewers

  • nahy-512
  • kimjw2003
  • chanmi1125

Poem

🐰 새로운 버튼들이 폴짝폴짝,
컬렉션 저장을 도와주지!
화면을 재구성하며 춤을 춘다네,
페이저와 함께 페이지를 넘기고,
디자인 시스템도 한껏 멋을 내네! ✨🎨

🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 PR의 주요 변경사항인 ExploreScreen(탐색 화면) 구현을 명확하게 요약하고 있습니다.
Description check ✅ Passed PR 설명이 필수 섹션(관련 이슈, 작업 내용, 스크린샷)을 포함하고 있으나 작업 내용이 간략합니다.
Linked Issues check ✅ Passed 변경사항(ExploreScreen, CollectionDetailScreen, 새로운 버튼 컴포넌트)들이 #110의 ExploreScreen 구현 요구사항을 충족합니다.
Out of Scope Changes check ✅ Passed ProfileImage, ContentModel, Color.kt의 변경사항들은 ExploreScreen과 CollectionDetailScreen 기능 구현을 지원하는 범위 내 변경입니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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

@giovannijunseokim giovannijunseokim changed the base branch from develop to feat/#86-how-to-make-custom-toast January 16, 2026 05:42
@giovannijunseokim giovannijunseokim changed the base branch from feat/#86-how-to-make-custom-toast to feat/#95-collection-detail-screen January 16, 2026 05:43

@kimjw2003 kimjw2003 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코리 한번만 확인부탁드립니다! 수고하셨습니다!

ExploreScreen(
modifier = Modifier.padding(paddingValues),
)
// ExploreScreen(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2
데이터는 나중에 넣더라도 PR에는 screen 호출이 되어있으면 좋겠습니다!

Comment on lines +64 to +70
if (pagerState.currentPage < pageCount) {
background(FlintTheme.colors.background)
} else {
background(
FlintTheme.colors.gradient900,
)
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3

background(if(pagerState.currentPage < pageCount) FlintTheme.colors.background else FlintTheme.colors.gradient900)

이렇게도 정리할 수 있을거 같습니다!

Comment on lines +58 to +59
val pageCount: Int = contents.size
val pagerState: PagerState = rememberPagerState(pageCount = { pageCount + 1 })

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p3

Explore 화면에서 페이지를 넘기다가 Home이나 Profile같은 다른 탭으로 이동 후 다시 Explore로 돌아왔을때 보고 있던 페이지가 유지 되어야 한다고 기획에서 말씀주셨는데
혹시 이 형태로도 해당 상황에서 문제가 일어나지는 않을까 궁금합니다!

그렇게 생각한 근거로는
remember로 선언을 해놓으면 리컴포지션 상황에서는 재생성을 막을 수 있지만, screen자체가 재생성 되는 경우에는 아마 pagerState또한 재생성되며 해당 내용들이 초기화 되지 않을까 우려됩니다. 확인 한번 부탁드립니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

뷰모델 로직 작성하면서 확인해주시면 좋을 것 같아요!

@nahy-512 nahy-512 added Feat ✨ 신규 기능을 추가하거나 기존 기능의 동작, 정책을 변경 📱 UI feat - 컴포넌트 조립, 화면 구현 labels Jan 17, 2026

@nahy-512 nahy-512 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~

Comment on lines +58 to +59
val pageCount: Int = contents.size
val pagerState: PagerState = rememberPagerState(pageCount = { pageCount + 1 })

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

뷰모델 로직 작성하면서 확인해주시면 좋을 것 같아요!

Modifier
.padding(bottom = 16.dp)
.fillMaxWidth()
.defaultMinSize(minHeight = 48.dp),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 이런 식으로 써줄 수도 있군요

@nahy-512 nahy-512 merged commit e735994 into feat/#95-collection-detail-screen Jan 17, 2026
3 checks passed
@nahy-512 nahy-512 deleted the feat/#110-explore-screen branch January 17, 2026 11:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feat ✨ 신규 기능을 추가하거나 기존 기능의 동작, 정책을 변경 📱 UI feat - 컴포넌트 조립, 화면 구현

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] ExploreScreen

3 participants