Skip to content

feat: 홈화면 UI 개편#212

Merged
kimjw2003 merged 10 commits into
developfrom
FLT-9-홈화면-UI-개편
Jun 14, 2026

Hidden character warning

The head ref may contain hidden characters: "FLT-9-\ud648\ud654\uba74-UI-\uac1c\ud3b8"
Merged

feat: 홈화면 UI 개편#212
kimjw2003 merged 10 commits into
developfrom
FLT-9-홈화면-UI-개편

Conversation

@kimjw2003

@kimjw2003 kimjw2003 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Summary

  • 홈화면 인기 컬렉션 섹션 UI 개편 및 API 연동
  • 추천 컬렉션 리스트 UI 구현 및 무한스크롤 적용
  • 홈화면 북마크 콘텐츠 API를 북마크 컬렉션 API로 교체
  • 홈화면 최근 저장한 콘텐츠 API를 신규 엔드포인트로 교체
  • OTT 바텀시트 UI 변경
  • 컬렉션 목록 화면 하단 그라데이션 그림자 추가

Changes

  • HomeScreen: 인기 컬렉션 섹션 리팩토링, 추천 컬렉션 컴포넌트 분리
  • HomeViewModel: 인기 컬렉션 API 연동, 북마크 컬렉션 API로 교체
  • HomeRecommendCollectionList, RecommendCollectionCard: 신규 추천 컬렉션 UI 컴포넌트
  • CollectionListScreen: 하단 그라데이션 그림자 추가 (148dp)
  • CollectionListRouteType: RECENT → FAMOUS 라우트 타입 변경
  • HomeApi: 인기 컬렉션 엔드포인트 추가, 최근 저장 엔드포인트 교체
  • TokenInterceptor: 검색 공개 엔드포인트 토큰 제외 처리
  • Color.kt: 디자인 시스템 색상 추가

Test plan

  • 홈화면 인기 컬렉션 섹션 정상 렌더링 확인
  • 추천 컬렉션 무한스크롤 동작 확인
  • 북마크 컬렉션 API 연동 확인
  • 최근 저장한 콘텐츠 API 신규 엔드포인트 동작 확인
  • OTT 바텀시트 UI 변경 확인
  • 컬렉션 목록 하단 그라데이션 그림자 확인

🤖 Generated with Claude Code

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 인기 컬렉션 목록 추가 및 홈 화면에 전시
    • 북마크된 콘텐츠에 북마크 수 및 북마크 상태 정보 표시
    • 추천 컬렉션 무한 스크롤 카드 UI 추가
    • 홈 배너 디자인 및 그라데이션 시스템 개선
  • 개선 사항

    • OTT 목록 바텀시트 상호작용 간소화
    • 보안 인증 헤더 적용 범위 정확화
    • API 엔드포인트 경로 수정

kimjw2003 and others added 10 commits May 8, 2026 01:13
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- GET /api/v1/home/popular-collections 엔드포인트 추가
- PopularCollectionResponseDto 신규 생성 및 CollectionListModel 매퍼 추가
- HomeViewModel recentCollection → popularCollection 교체, CollectionRepository 의존성 제거
- CollectionListViewModel FAMOUS 라우트 popular API로 교체
- TokenInterceptor에서 /api/v1/search/contents 요청 시 토큰 헤더 제외

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
# Conflicts:
#	app/src/main/java/com/flint/data/di/interceptor/TokenInterceptor.kt
- /api/v1/contents/bookmarks(ContentRepository) → GET /api/v1/users/me/bookmarked-collections(UserRepository)
- HomeViewModel: ContentRepository 제거, UserRepository 주입, getBookmarkedCollectionList()로 변경
- HomeUiState: bookmarkedContentListLoadState → bookmarkedCollectionListLoadState(CollectionListModel)
- HomeScreen: SavedContentsSection → CollectionSection("저장한 컬렉션"), OTT 바텀시트 제거
- 저장 컬렉션 클릭 시 컬렉션 상세 화면으로 이동

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- UserApi: /api/v1/contents/{userId} → /api/v1/users/{userId}/bookmarked-contents 경로 수정
- BookmarkedContentListResponseDto: totalCount, bookmarkCount, isBookmarked 필드 추가
- HomeViewModel: getUserBookmarkedContents(null) 호출, OTT 바텀시트 복구
- HomeUiState: bookmarkedContentListLoadState(BookmarkedContentListModel) 복구
- HomeScreen: SavedContentsSection 복구, 아이템 0개일 때 섹션 숨김

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
스크롤 가능한 콘텐츠가 있음을 암시하는 하단 페이드 오버레이 추가
(투명 → 배경색, 80dp)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

홈 화면을 "최근 컬렉션" 기반에서 "인기 컬렉션" 기반으로 전환한다. Popular Collections API 스택(DTO → Mapper → Repository → ViewModel)을 신규 구축하고, 추천 컬렉션 무한 페이저 컴포넌트(HomeRecommendCollectionList, RecommendCollectionCard)를 추가한다. OTT 바텀시트의 onMoveClick 파라미터를 제거하고, 디자인 시스템에 신규 그라데이션 색상 토큰을 추가하며, 북마크·검색 API 엔드포인트 경로를 수정한다.

Changes

홈 인기 컬렉션 피처 및 화면 재구성

Layer / File(s) Summary
인기 컬렉션 API 계층
com/flint/data/dto/home/response/PopularCollectionResponseDto.kt, com/flint/data/api/HomeApi.kt, com/flint/data/api/UserApi.kt, com/flint/data/dto/content/response/BookmarkedContentListResponseDto.kt, com/flint/data/di/interceptor/TokenInterceptor.kt
PopularCollectionResponseDto/PopularCollectionItemResponseDto DTO 신규 정의, HomeApigetPopularCollections() 추가, UserApi 북마크 경로 /contents//users/로 수정, BookmarkedContentListResponseDtototalCount·bookmarkCount·isBookmarked 필드 추가, TokenInterceptor 공개 엔드포인트 판별 조건 변경.
도메인 Mapper/Model/Repository 확장
com/flint/domain/mapper/collection/CollectionMapper.kt, com/flint/domain/repository/HomeRepository.kt, com/flint/domain/model/collection/CollectionListModel.kt, com/flint/core/navigation/model/CollectionListRouteType.kt
PopularCollectionResponseDto.toModel() extension 추가, HomeRepository.getPopularCollectionList() 구현, CollectionListModel.FakeList 더미 데이터 확장, CollectionListRouteType.RECENTFAMOUS 교체.
디자인 시스템 색상 토큰 확장
com/flint/core/designsystem/theme/Color.kt
Colorstransparent, blueGradient, primary400Gradient, grayGradient, gray800Gradient, userBadgeGradient, userBadgeStroke 추가 및 FlintColors 초기값 설정.
OTT 바텀시트 onMoveClick 제거
com/flint/core/designsystem/component/listItem/OttShortCutListItem.kt, com/flint/core/designsystem/component/bottomsheet/OttListBottomSheet.kt, com/flint/presentation/profile/ProfileScreen.kt
OttShortCutListItem·OttListBottomSheet에서 onMoveClick 파라미터 및 클릭 핸들러 제거, LazyColumn에 헤더 텍스트·Spacer 추가, ProfileScreen·HomeScreen 호출부에서 onMoveClick 인자 제거.
HomeViewModel 및 HomeUiState 재구성
com/flint/presentation/home/HomeViewModel.kt, com/flint/presentation/home/uistate/HomeUiState.kt
collectionRepositoryuserRepository 교체, getRecentCollectionList() 제거 후 getPopularCollectionList() 추가, getBookmarkedContentList() 경로를 userRepository로 변경, HomeUiState에서 recentCollectionListLoadStatepopularCollectionListLoadState 교체.
추천 컬렉션 카드 및 무한 페이저 컴포넌트 신규 추가
com/flint/presentation/home/component/RecommendCollectionCard.kt, com/flint/presentation/home/component/HomeRecommendCollectionList.kt
RecommendCollectionCard(isCurrentPage 기반 동적 그라데이션 카드) 신규 추가, HomeRecommendCollectionList(무한 HorizontalPager, 모듈로 인덱스 매핑, 도트 인디케이터) 신규 추가.
HomeScreen 및 HomeBanner UI 재구성
com/flint/presentation/home/HomeScreen.kt, com/flint/presentation/home/component/HomeBanner.kt
HomeRoutegetPopularCollectionList() 호출 추가, HomeScreen 파라미터를 famousCollectionModelList 기반으로 교체, LazyColumnHomeRecommendCollectionList+SavedContentsSection+CollectionSection(인기)으로 재구성, OttListBottomSheet openUri 제거, HomeBanner 배경 이미지/높이 변경 및 텍스트 로고 추가.
CollectionListScreen/ViewModel FAMOUS 라우트 연결
com/flint/presentation/collectionlist/CollectionListViewModel.kt, com/flint/presentation/collectionlist/CollectionListScreen.kt
CollectionListViewModelHomeRepository 주입, FAMOUS 라우트 분기에서 getPopularCollectionList() 호출. CollectionListScreen 컨테이너를 Box로 변경하여 그라데이션 오버레이 구성.

Sequence Diagram(s)

sequenceDiagram
  participant HomeRoute
  participant HomeViewModel
  participant HomeRepository
  participant HomeApi

  rect rgba(100, 149, 237, 0.5)
    Note over HomeRoute,HomeViewModel: 초기 로딩
    HomeRoute->>HomeViewModel: getRecommendedCollectionList()
    HomeRoute->>HomeViewModel: getBookmarkedContentList() via userRepository
    HomeRoute->>HomeViewModel: getPopularCollectionList()
  end

  HomeViewModel->>HomeRepository: getPopularCollectionList()
  HomeRepository->>HomeApi: GET /api/v1/home/popular-collections
  HomeApi-->>HomeRepository: PopularCollectionResponseDto
  HomeRepository-->>HomeViewModel: Result<CollectionListModel>
  HomeViewModel-->>HomeRoute: popularCollectionListLoadState → Success
  HomeRoute->>HomeRoute: HomeScreen(famousCollectionModelList=...)
Loading
sequenceDiagram
  participant User
  participant HomeScreen
  participant HomeRecommendCollectionList
  participant RecommendCollectionCard
  participant CollectionSection

  User->>HomeScreen: 화면 진입
  HomeScreen->>HomeRecommendCollectionList: collectionListModel (recommended)
  HomeRecommendCollectionList->>RecommendCollectionCard: item, isCurrentPage
  RecommendCollectionCard-->>User: 그라데이션 카드 렌더링

  HomeScreen->>CollectionSection: famousCollectionModelList (인기 컬렉션)
  CollectionSection-->>User: 인기 컬렉션 그리드 렌더링

  User->>RecommendCollectionCard: 카드 클릭
  RecommendCollectionCard->>HomeScreen: onFamousCollectionItemClick(id)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • imflint/Flint-Android#160: OttListBottomSheetOttShortCutListItemonMoveClick 파라미터 처리 및 공개 API 시그니처를 직접 변경한 PR로, 본 PR의 해당 파라미터 제거와 코드 레벨에서 직접 연결됩니다.
  • imflint/Flint-Android#142: HomeScreen, HomeViewModel, HomeUiState 등 홈 피처 진입점과 상태/모델 타입을 함께 수정한 PR로, 본 PR과 동일한 레이어를 변경합니다.
  • imflint/Flint-Android#111: CollectionListScreen의 컴포저블 레이아웃 구성 및 라우트 파라미터를 함께 변경한 PR로, 본 PR의 CollectionList 화면 재구성과 직접 연관됩니다.

Suggested labels

Feat ✨, 📱 UI, 🔖 API

Suggested reviewers

  • nahy-512

Poem

🐰 토끼가 화면을 새로 꾸몄어요~
최근 컬렉션은 이제 안녕,
인기 컬렉션이 반짝반짝 ✨
그라데이션 물결 위에 카드가 춤추고,
onMoveClick은 조용히 사라졌답니다 🌸
홈 화면이 한층 더 빛나는 오늘! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 6.25% 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 제목이 홈화면 UI 개편의 주요 변경사항을 명확하고 간결하게 요약하고 있습니다.
Description check ✅ Passed PR 설명에 주요 변경사항, 영향받는 컴포넌트, 테스트 계획이 포함되어 있으나 관련 이슈 번호와 스크린샷이 누락되었습니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch FLT-9-홈화면-UI-개편

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 and usage tips.

@chanmi1125 chanmi1125 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.

어푸어푸 🏊‍♂️🏊‍♂️🏊‍♂️

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@app/src/main/java/com/flint/data/dto/content/response/BookmarkedContentListResponseDto.kt`:
- Around line 8-9: The new fields totalCount in BookmarkedContentListResponseDto
and bookmarkCount and isBookmarked in BookmarkedContentResponseDto are added to
the DTOs but not being mapped to the domain models. Update the toModel()
extension functions in ContentMapper.kt for both
BookmarkedContentListResponseDto (lines 13-28) and BookmarkedContentResponseDto
to include mappings for totalCount, bookmarkCount, and isBookmarked
respectively. Additionally, add these corresponding fields to the domain model
classes BookmarkedContentListModel and BookmarkedContentItemModel so the API
response data is properly preserved through the mapping layer instead of being
discarded.

In `@app/src/main/java/com/flint/presentation/home/HomeViewModel.kt`:
- Around line 66-82: In the three functions getRecommendedCollectionList,
getBookmarkedContentList, and getPopularCollectionList, the onFailure blocks
only log errors but do not emit failure states to the UI. For each function,
replace the onFailure block that currently calls Timber.e(it.message) with code
that emits a UiState.Failure state to the corresponding MutableStateFlow: emit
UiState.Failure to _recommendCollectionListLoadState in
getRecommendedCollectionList, emit UiState.Failure to
_bookmarkedContentListLoadState in getBookmarkedContentList, and emit
UiState.Failure to _popularCollectionListLoadState in getPopularCollectionList.
Include the error details in each UiState.Failure emission so the UI can
properly handle and display error states instead of remaining stuck in a Loading
state.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1585074e-0333-48f8-bd72-7e25e28e4948

📥 Commits

Reviewing files that changed from the base of the PR and between 47fb8ce and 3a938c3.

⛔ Files ignored due to path filters (1)
  • app/src/main/res/drawable/img_home_banner.png is excluded by !**/*.png
📒 Files selected for processing (21)
  • app/src/main/java/com/flint/core/designsystem/component/bottomsheet/OttListBottomSheet.kt
  • app/src/main/java/com/flint/core/designsystem/component/listItem/OttShortCutListItem.kt
  • app/src/main/java/com/flint/core/designsystem/theme/Color.kt
  • app/src/main/java/com/flint/core/navigation/model/CollectionListRouteType.kt
  • app/src/main/java/com/flint/data/api/HomeApi.kt
  • app/src/main/java/com/flint/data/api/UserApi.kt
  • app/src/main/java/com/flint/data/di/interceptor/TokenInterceptor.kt
  • app/src/main/java/com/flint/data/dto/content/response/BookmarkedContentListResponseDto.kt
  • app/src/main/java/com/flint/data/dto/home/response/PopularCollectionResponseDto.kt
  • app/src/main/java/com/flint/domain/mapper/collection/CollectionMapper.kt
  • app/src/main/java/com/flint/domain/model/collection/CollectionListModel.kt
  • app/src/main/java/com/flint/domain/repository/HomeRepository.kt
  • app/src/main/java/com/flint/presentation/collectionlist/CollectionListScreen.kt
  • app/src/main/java/com/flint/presentation/collectionlist/CollectionListViewModel.kt
  • app/src/main/java/com/flint/presentation/home/HomeScreen.kt
  • app/src/main/java/com/flint/presentation/home/HomeViewModel.kt
  • app/src/main/java/com/flint/presentation/home/component/HomeBanner.kt
  • app/src/main/java/com/flint/presentation/home/component/HomeRecommendCollectionList.kt
  • app/src/main/java/com/flint/presentation/home/component/RecommendCollectionCard.kt
  • app/src/main/java/com/flint/presentation/home/uistate/HomeUiState.kt
  • app/src/main/java/com/flint/presentation/profile/ProfileScreen.kt
💤 Files with no reviewable changes (1)
  • app/src/main/java/com/flint/presentation/profile/ProfileScreen.kt

Comment on lines +8 to +9
@SerialName("totalCount")
val totalCount: Int = 0,

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.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

DTO에 추가된 필드가 도메인 모델로 매핑되지 않음.

BookmarkedContentListResponseDtototalCount, BookmarkedContentResponseDtobookmarkCountisBookmarked 필드가 추가되었지만, ContentMapper.kttoModel() 확장 함수에서 이 필드들을 매핑하지 않고 있습니다 (app/src/main/java/com/flint/domain/mapper/content/ContentMapper.kt:13-28 참조).

API가 이제 이 데이터를 제공한다면 도메인 모델과 UI 상태에 반영되어야 합니다. 현재는 API 응답 데이터가 버려지고 있어 데이터 무결성 문제가 발생합니다.

🔧 제안: 매퍼 업데이트

ContentMapper.kt를 업데이트하여 새 필드를 매핑하세요:

fun BookmarkedContentListResponseDto.toModel() : BookmarkedContentListModel {
    return BookmarkedContentListModel(
        totalCount = totalCount,
        contents = contents.map { it.toModel() }.toImmutableList()
    )
}

fun BookmarkedContentResponseDto.toModel() : BookmarkedContentItemModel {
    return BookmarkedContentItemModel(
        id = id,
        title = title,
        year = year,
        imageUrl = imageUrl,
        bookmarkCount = bookmarkCount,
        isBookmarked = isBookmarked,
        getOttSimpleList = getOttSimpleList.mapNotNull { ottSimple ->
            runCatching { OttType.valueOf(ottSimple.ottName) }.getOrNull()
        }
    )
}

그리고 BookmarkedContentListModelBookmarkedContentItemModel에도 해당 필드를 추가하세요.

Also applies to: 24-27

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@app/src/main/java/com/flint/data/dto/content/response/BookmarkedContentListResponseDto.kt`
around lines 8 - 9, The new fields totalCount in
BookmarkedContentListResponseDto and bookmarkCount and isBookmarked in
BookmarkedContentResponseDto are added to the DTOs but not being mapped to the
domain models. Update the toModel() extension functions in ContentMapper.kt for
both BookmarkedContentListResponseDto (lines 13-28) and
BookmarkedContentResponseDto to include mappings for totalCount, bookmarkCount,
and isBookmarked respectively. Additionally, add these corresponding fields to
the domain model classes BookmarkedContentListModel and
BookmarkedContentItemModel so the API response data is properly preserved
through the mapping layer instead of being discarded.

Comment on lines 66 to 82
fun getRecommendedCollectionList() = viewModelScope.launch {
homeRepository.getRecommendedCollectionList()
.onSuccess {
_recommendCollectionListLoadState.emit(UiState.Success(it))
}
.onFailure {
Timber.e(it.message)
}
.onSuccess { _recommendCollectionListLoadState.emit(UiState.Success(it)) }
.onFailure { Timber.e(it.message) }
}

fun getBookmarkedContentList() = viewModelScope.launch {
contentRepository.getBookmarkedContentList()
.onSuccess {
_bookmarkedContentListLoadState.emit(UiState.Success(it))
}
.onFailure {
Timber.e(it.message)
}
userRepository.getUserBookmarkedContents(userId = null)
.onSuccess { _bookmarkedContentListLoadState.emit(UiState.Success(it)) }
.onFailure { Timber.e(it.message) }
}

fun getRecentCollectionList() = viewModelScope.launch {
collectionRepository.getRecentCollectionList()
.onSuccess {
_recentCollectionListLoadState.emit(UiState.Success(it))
}
.onFailure {
Timber.e(it.message)
}
fun getPopularCollectionList() = viewModelScope.launch {
homeRepository.getPopularCollectionList()
.onSuccess { _popularCollectionListLoadState.emit(UiState.Success(it)) }
.onFailure { Timber.e(it.message) }
}

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.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

실패 시 UiState.Failure를 emit하지 않아 홈 로딩 상태가 무한 Loading으로 고정됩니다.

Line 69, Line 75, Line 81에서 로그만 남기고 상태를 갱신하지 않아 HomeUiState.loadState의 실패 분기가 사실상 동작하지 않습니다. 각 onFailure에서 대응하는 MutableStateFlow에 실패 상태를 반영해주세요.

수정 예시
 fun getRecommendedCollectionList() = viewModelScope.launch {
     homeRepository.getRecommendedCollectionList()
         .onSuccess { _recommendCollectionListLoadState.emit(UiState.Success(it)) }
-        .onFailure { Timber.e(it.message) }
+        .onFailure {
+            _recommendCollectionListLoadState.emit(UiState.Failure)
+            Timber.e(it.message)
+        }
 }

 fun getBookmarkedContentList() = viewModelScope.launch {
     userRepository.getUserBookmarkedContents(userId = null)
         .onSuccess { _bookmarkedContentListLoadState.emit(UiState.Success(it)) }
-        .onFailure { Timber.e(it.message) }
+        .onFailure {
+            _bookmarkedContentListLoadState.emit(UiState.Failure)
+            Timber.e(it.message)
+        }
 }

 fun getPopularCollectionList() = viewModelScope.launch {
     homeRepository.getPopularCollectionList()
         .onSuccess { _popularCollectionListLoadState.emit(UiState.Success(it)) }
-        .onFailure { Timber.e(it.message) }
+        .onFailure {
+            _popularCollectionListLoadState.emit(UiState.Failure)
+            Timber.e(it.message)
+        }
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/main/java/com/flint/presentation/home/HomeViewModel.kt` around lines
66 - 82, In the three functions getRecommendedCollectionList,
getBookmarkedContentList, and getPopularCollectionList, the onFailure blocks
only log errors but do not emit failure states to the UI. For each function,
replace the onFailure block that currently calls Timber.e(it.message) with code
that emits a UiState.Failure state to the corresponding MutableStateFlow: emit
UiState.Failure to _recommendCollectionListLoadState in
getRecommendedCollectionList, emit UiState.Failure to
_bookmarkedContentListLoadState in getBookmarkedContentList, and emit
UiState.Failure to _popularCollectionListLoadState in getPopularCollectionList.
Include the error details in each UiState.Failure emission so the UI can
properly handle and display error states instead of remaining stuck in a Loading
state.

@kimjw2003 kimjw2003 merged commit f39d2cd into develop Jun 14, 2026
2 checks passed
@kimjw2003 kimjw2003 deleted the FLT-9-홈화면-UI-개편 branch June 14, 2026 10:37
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.

2 participants